私のフォーム検証では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>
おかげで、しかし、私は何をしようとしていたある[設定ファイルに検証ルールを保存](のhttp:// CodeIgniterの.com/user_guide/libraries/form_validation.html#savingtoconfig)、これは[バグ](https://bitbucket.org/ellislab/codeigniter-reactor/issue/1/form_validation-class-fails-to-ロケートルール)。 – kirkaracha
ちょうど、CIドキュメントでは 'config/form_validations.php'から自動的にロードされていると明言されていますので、テストしました。 – aspirinemaga