6

CI ドキュメントや Web 全体の他の投稿を参照してコードをチェックして再チェックしましたが、検証に失敗した後にフォーム フィールドを再入力するための set_value() メソッドの実装に失敗しました。おそらく、CI フレームワークの非常に基本的なものを見逃しているかもしれません (私はそれにかなり慣れていません) が、あなたの洞察は大歓迎です。

コントローラーメソッドには次のものがあります。

public function form_step2(){
    //Form Setup
    $this->load->helper('form');
    $this->load->helper('url');
    $this->load->library('form_validation');
    $data['title'] = $this->base_title;
    $data['base_url'] = base_url();

    //Validation Settings - must be set per step
    $this->form_validation->set_rules('request_type', 'Request Type', 'required');
    *...more of the same set_rules()*


    if ($this->form_validation->run() === FALSE) {
        ### Validation failed or New Form

        // Get form element data
        $data['request_types'] = $this->my_model->get_form_data('request_type');
        *...more of the same get_form_data() calls for loading form elements*

        //Generate Page from View Templates
        $this->load->view('templates/header', $data);
        $this->load->view('templates/form_step2', $data);
        $this->load->view('templates/footer');
    } else {
        ### Save to database
        $this->my_model->set_data($data);

        redirect('my_model/success','refresh');
    }
}

そして、私の見解では、再入力されていないコードのスニペット:

<?php echo form_open('my_model/form_step2', array('class'=>'form-inline')); ?>

<label for="fname">First Name</label>
<input type="text" id="fname" name="fname" value="<?php echo set_value('fname'); ?>" />
<input type="submit" name="submit" value="Submit" />

よく分からないので、よろしくお願いします。

4

4 に答える 4

13

使用する場合は、その POST/GET フィールドset_data()にも使用する必要があります。set_rules

すべての set_rules をコメントアウトしたため、これが問題であることは確認できませんが、問題である可能性が最も高いです。

コードにこの行があるかどうかを確認してください

$this->form_validation->set_rules('fname', 'First name', 'trim|required');

したがって、フィールドに再入力name="fname"する必要がある場合はset_rules() // as line above、それ以外の場合は処理されないため、set_value('fname')空になります。

于 2013-10-16T01:23:04.657 に答える
1

あなたは確かに解決策を見つけましたが、この問題に多くの時間を費やしていた私のような人々にとっては. 私は解決策を見つけました:

代わりにそれをコーディングする

<input type="text" id="fname" name="fname" value="<?php echo set_value('fname'); ?>" />

これを試してみてください。非常にうまく動作します:

<?php $data =  array('id' =>fnam, 'name'=> 'fname','value'=> set_value('fname'), 'size =>'50');
echo form_input($data).'<br />'; ?>
于 2014-01-27T18:24:07.977 に答える
0

この方法を試してください。検証エラーと設定値の両方を取得します

ビューで

<?php echo flash_message();
  if($this->session->userdata('postinput') !=""){
    $value = $this->session->userdata('postinput');
    $this->session->unset_userdata('postinput');
  }else
    $value = "";

?>
<form action="<?php echo site_url('carlisting/carlist');?>" method="post" id="your_reg_form">
<div class="reg-search">
 <input placeholder="YOUR REG" name="input" type="text" value="<?php echo $value; ?>">
</div>

コントローラー内

$this->form_validation->set_rules('input', 'Registration', 'required|min_length[2]|max_length[7]');
if ($this->form_validation->run() == false){
  $this->session->set_flashdata( 'message', array('content' => validation_errors(), 'type' => 'error_message_small' )); 
        $this->session->set_userdata('postinput',$this->input->post('input'));
        redirect('home');
}
于 2014-08-14T06:26:30.367 に答える