FuelPHP로 폼의 필수 항목에 ※를 붙인다

7655 단어 FuelPHP
밸리데이션 룰은 Model에서 정의하고 있는데 필수 항목은 View에 직접

Validation 클래스 확장



fuel/app/classes/validation.php
<?php

class Validation extends \Fuel\Core\Validation {

    /**
     * If $field has 'required' rule, It will return true
     */
    public function is_required( $field ) {
        $fields = $this->fieldset()->field();
        if( isset($fields[$field]) ){
            foreach( $fields[$field]->rules as $r ){
                if( $r[0] == 'required' ){
                    return true;
                }
            }
        }
        return false;
    }
}

fuel/app/bootstrap.php
Autoloader::add_classes(array(
    'Validation' => APPPATH.'classes/validation.php',
));

Controller에서 Validation 전달


public function action_create(){
...
    $val = Model_Item::validation('create')
    if( $val->run() ){
    }
    $this->template->content = View::forge('item/create',array('val'=>$val));
...

View에서 필드별로 클래스 출력


        <div class="form-group<?php echo ($errors && $val->error('title'))?" has-error":""; ?><?php echo ($val->is_required('title'))?' required':'';?>">
            <?php echo Form::label(__('model.topic.title'), 'title', array('class'=>'control-label')); ?>

            <?php echo Form::input('title', Input::post('title', isset($item) ? $item->title : ''), array('class' => 'form-control', 'placeholder'=>'')); ?>

        </div>

CSS로 수정


.form-group.required label:after{
  content:'*';
  color:#a94442;
  font-weight:bold;
  display:inline-block;
  margin-left:0.5em;
}

결과 샘플



좋은 웹페이지 즐겨찾기