0

CI を使用してフォームを設定しており、これを支援するためにフォーム検証を使用しています。

現時点では、次のようにさまざまなルールを設定しています

$this->form_validation->set_rules('first_name', 'First Name', 'required|xss_clean');

しかし、私のフォームにはチェックボックスがあります。チェックボックスを有効にすると、チェックボックスをオンにしたときに必要な新しい入力が表示されます。チェックボックスがオフの場合、これらのフィールドは必須ではありません。

CIでこれを行うための最良の方法は何ですか?

// Set validation rules
$this->form_validation->set_rules('first_name', 'First Name', 'required|xss_clean');
$this->form_validation->set_rules('last_name', 'Last Name', 'required|xss_clean');
// Some more rules here

if($this->form_validation->run() == true) {
    // Form was validated
}
4

3 に答える 3

7

私は数ヶ月前にこのようなことに直面しました。短い if ステートメントを追加しただけです。

これは次のように見えます (たとえば、アドレスを使用):

$this->form_validation->set_rules('home_address', '"Home Address"', 'required|trim|xss_clean|strip_tags');
$this->form_validation->set_rules('unit', '"Unit"', 'trim|xss_clean|strip_tags');
$this->form_validation->set_rules('city', '"City"', 'required|trim|xss_clean|strip_tags');
$this->form_validation->set_rules('state', '"State"', 'required|trim|xss_clean|strip_tags');
$this->form_validation->set_rules('zip', '"Zip"', 'required|trim|xss_clean|strip_tags');

//checkbox formatted like this in the view: form_checkbox('has_second_address', 'accept'); 
if ($this->input->post('has_second_address') == 'accept')
{
    $this->form_validation->set_rules('street_address_2', '"Street Address 2"', 'required|trim|xss_clean|strip_tags');
    $this->form_validation->set_rules('state_2', '"State 2"', 'required|trim|xss_clean|strip_tags');
    $this->form_validation->set_rules('city_2', '"City 2"', 'required|trim|xss_clean|strip_tags');
    $this->form_validation->set_rules('zip_2', '"Zip 2"', 'required|trim|xss_clean|strip_tags');
}

if($this->form_validation->run() == true) {
    //example
    //will return FALSE if empty
    $street_address_2 = $this->input->post('street_address_2');
    //and so on...
}

これが Codeigniter の方法なのかどうかはわかりませんが、前回確認したときは「最善の方法」の方法が見つかりませんでした。これは間違いなく仕事を成し遂げ、少なくともユーザーの $_POST 変数を制御することができます。

とにかく、これが役立つことを願っています

于 2013-01-17T15:57:27.673 に答える
6
if($this->input->post('checkbox_name')){
    // add more validation rules here
}
于 2013-01-17T15:54:35.633 に答える
0

チェックボックスがチェックされているかどうかに応じて、javascript / jquery を使用して隠しフィールドの値を true または false に設定できます。

次に、コントローラーで条件付きチェックを行います

if ($hidden_field) {
   //run more validation.
}
于 2013-01-17T15:53:23.650 に答える