2011-01-18 9 views
2

私のフォーム検証ではCodeIgniter 2のconfig fileのルールを使用していません。私は/ admin/people/addと/ admin/peopleのフォームにアクセスしています/編集/ idに送信し、/ admin/people/saveに送信してください。私が追加フォームを送信すると、検証エラーは報告されずに追加されます($ this-> form_validation - > _ error_arrayが空でないと、フォームビューに検証エラーが表示されます。編集フォームを送信すると、最初に編集ページに移動したときにそのURIが機能するにもかかわらず、/ admin/people/saveに404エラーが表示されます。コンストラクタでフォーム検証ライブラリをロードしています。Form_validationが設定ファイル(CodeIgniter 2)のルールを使用していません

アプリケーション/設定/ form_validation.php:

<?php if(!defined('BASEPATH')) exit('No direct script access allowed'); 
$config = array(
    'people/save' => array(
     array(
      'field' => 'first_name', 
      'label' => 'first name', 
      'rules' => 'trim|required' 
     ) 
    ) // people/save 
); 
/* End of file form_validation.php */ 
/* Location: /application/config/form_validation.php */ 

アプリケーション/コントローラ/管理/ people.php:

public function add() { 
    $fields = $this->db->list_fields('people'); 
    /* set_defaults makes an object with null values for the fields in the database */ 
    $person = $this->form_validation->set_defaults($fields); 
    $data = array(
     'action' => 'add', 
     'person' => $person, 
     'button_text' => 'Add Person' 
    ); 
    $data['page_type'] = 'form'; 
    $this->layouts->set_title('Add a Person'); 
    $this->layouts->view('people/add_edit_person_form',$data); 
} // add 

public function save(){ 
    if($this->form_validation->run('people/save') == FALSE){ 
     if(is_numeric($this->input->post('person_id'))){ 
      $this->edit(); 
     } else { 
      $this->add(); 
     } 
    } else { 
     redirect('people'); // test to see if it's passing validation 
    } 
} // save 

アプリケーション/ビュー/ add_edit_person_form.php:

<?php 
$attributes = array(
    'class' => 'block', 
    'id' => 'add_edit_person' 
); 
echo form_open('admin/people/save'); 
?> 
<div class="required<?php echo form_error('first_name')?' error':'';?>"> 
    <label for="first_name">First name:</label> 
    <input name="first_name" id="first_name" type="text" value="<?php echo set_value('first_name',$person->first_name); ?>" size="75" maxlength="255" /> 
</div> 

<input name="person_id" id="person_id" type="hidden" value="<?php echo set_value('id',$person->id); ?>" /> 
<button><?php echo $button_text; ?></button> 

</form> 

答えて

2

$configアレイをapplication/config/form_validation.phpに定義した後、cルールを設定するために、以下のすべての機能:

$this->form_validation->set_rules($config); 

参考:Setting Rules Using an Array

+0

おかげで、しかし、私は何をしようとしていたある[設定ファイルに検証ルールを保存](のhttp:// CodeIgniterの.com/user_guide/libraries/form_validation.html#savingtoconfig)、これは[バグ](https://bitbucket.org/ellislab/codeigniter-reactor/issue/1/form_validation-class-fails-to-ロケートルール)。 – kirkaracha

+0

ちょうど、CIドキュメントでは 'config/form_validations.php'から自動的にロードされていると明言されていますので、テストしました。 – aspirinemaga

関連する問題