1

ここでは、「タイトル」フィールドと「HTML」フィールドの 2 つのフィールドを検証しようとしています。

私はこのコードを持っています:

$this->form_validation->set_rules('title', $this->input->post('title'), 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', $data['html'], 'required');
if ($this->form_validation->run() == FALSE){
    echo 'Fail';
}else{
    echo 'Success';
}
die();

両方の変数が有効な文字列であることを確認できます。

両方のフィールドが有効な場合でも、関数は常に false を返します。1 つのフィールドに 1 つのルールのみを設定すると、関数は成功すると true を返します。

誰かアドバイスしてくれませんか?

本当にありがとうございました。

ピーター

4

1 に答える 1

4

検証ルールの 2 番目のパラメーターは、実際のデータではなく、人間が判読できるフィールド名にする必要があります。次のコードを検討してください。

$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', 'HTML', 'required');

最初のルールは、POST 変数$_POST['title']をチェックして、それが設定されていて、5 ~ 255 文字であることを確認します。これらのルールに違反した場合、その名前Titleがエラー メッセージで使用されます。2 番目のルールでは、変数$_POST['html']が設定されていることを確認し、設定されていない場合はHTMLエラー メッセージの名前を使用します。

具体的な実装の詳細については、CodeIgniter のドキュメントを参照してください。

コードに基づいて、$_POSTフォーム検証を通じて配列の一部ではないいくつかの変数を実行したいようです。これを行うには、2 つの選択肢があります。まず、検証するすべてのデータを配列に入れ、 の$this->form_validation->set_data($array)代わりにその配列を使用するために使用できます$_POST。または、検証するフィールドを に追加することもできます$_POST

set_data()例:

$formData = array('title' => $this->input->post('title'), 'html' => $data['html']);
$this->form_validation->set_data($formData);
$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
    $this->form_validation->set_rules('html', 'HTML', 'required');
if ($this->form_validation->run() == FALSE){
    echo 'Fail';
}else{
    echo 'Success';
}

$_POST例:

$_POST['html'] = $data['html'];
$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
    $this->form_validation->set_rules('html', 'HTML', 'required');
if ($this->form_validation->run() == FALSE){
    echo 'Fail';
}else{
    echo 'Success';
}

個人的にはおすすめの$_POST方法です。

于 2013-07-02T16:55:27.027 に答える