0

関数を使用して、パラメーターで日付を検証したいのですが、構成配列にすべての検証があります。

config = array(
'page1/send'   => array(
    array(
            'field' => 'name',
            'label' => 'lang:name',
            'rules' => 'required'
         )
),    

'page2/send'   => array(
                            array(
                                    'field' => 'name',
                                    'label' => 'lang:name',
                                    'rules' => 'required'
                            ),
                             array(
                                    'field' => 'date1',
                                    'label' => 'lang:date',
                                    'rules' => 'required|'
                            )
                            array(
                                    'field' => 'date2',
                                    'label' => 'lang:date',
                                    'rules' => 'required|callback_date_compare'
                            )

                        ),

この場合、「callback_date_compare」にもう一方のフィールド (date1) に追加のパラメーターを渡したいと思います。

"$date1" が post['date1'] の値であり、完全に機能する場合、配列にルールを設定せずにこの方法で実行できます。

$this->form_validation->set_rules('date2', 'lang:date', 'required|callback_date_compare[' . $date1 . ']');

内部にすべての検証があり、 $config 配列内で同じ方法で実行しようとしたため、配列内で実行する必要がありますが、次のように機能しませんでした。

                                  array(
                                        'field' => 'date2',
                                        'label' => 'lang:date',
                                        'rules' => 'required|callback_date_compare[date1]'
                                )

どんな助けでも大歓迎です。

4

3 に答える 3

3

構成配列内

array(
        'field' => 'date2',
        'label' => 'lang:date',
        'rules' => 'required|callback_date_compare[date1]'
   )

あなたの日付比較コールバックで

function date_compare($value, $field_name)
{
    // Get the value in the field
    $field = $_POST[$field_name];

    if ($value != $this->input->post($field))
    {
          $this->form_validation->set_message('date_compare', 'Dates are different');
          return FALSE;
    }
    else
    {
         return TRUE;
    }

}
于 2012-05-15T14:03:18.043 に答える
1

構成はグローバルであるため、関数もグローバルにすることをお勧めします。

MY_Form_validation.phpで作成libraries/:

<?php

class MY_Form_validation extends CI_Form_validation {

    function date_compare($str_start, $str_key) {

        $bool   =   ($str_start == $this->input->post($str_key));
        if ( ! $bool)
            $this->form_validation->set_message('date_compare', 'Dates are different');

        return $bool;

    }

}

次に、ルールを設定しdate_compare[date1]ます。

于 2012-05-15T14:15:53.503 に答える
0

date_compare という関数を作成します。

public function date_compare($date2)
{

if ($date2 != $this->input->post("date1"))
{
$this->form_validation->set_message('date_compare', 'Dates are different');
return FALSE;
}
else
{
return TRUE;
}

}

構成:

'page2/send'   => array(
                            array(
                                    'field' => 'name',
                                    'label' => 'lang:name',
                                    'rules' => 'required'
                            ),
                             array(
                                    'field' => 'date1',
                                    'label' => 'lang:date',
                                    'rules' => 'required|'
                            )
                            array(
                                    'field' => 'date2',
                                    'label' => 'lang:date',
                                    'rules' => 'required|callback_date_compare'
                            )

                        ),
于 2012-05-15T13:41:07.440 に答える