1

我试图在这里验证 2 个字段,“标题”和“HTML”字段。

我有这个代码:

$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。如果我只为一个字段设置一个规则,那么如果成功,该函数将返回 true。

有人可以建议吗?

非常感谢,

彼得

4

1 回答 1

4

验证规则的第二个参数应该是字段的可读名称,而不是实际数据。考虑以下代码。

$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则在错误消息中使用名称。第二条规则将检查变量$_POST['html']以确保它已设置,如果未设置,将使用HTML错误消息中的名称。

查看CodeIgniter 文档以了解更具体的实现细节。

根据您的代码,您似乎想$_POST通过表单验证运行一些不属于数组的变量。为此,您有两个选择。首先,您可以将要验证的所有数据放入一个数组中,并用于$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 回答