検証ルールの 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
方法です。