使用CodeIgniter的表单验证类时,视图中的form_errors
始终显示错误消息。此外,使用set_value
方法永远不会使用正确的值填充该字段,除非没有对其进行验证。
我已经扩展了form_validation类,但只是为了添加我需要的新方法并完全删除代码并没有什么区别。
我的控制器的代码是:
function test() {
$data['title'] = 'My title';
$this->form_validation->set_rules('title', 'Title', 'trim|required');
if($this->form_validation->run() == FALSE) {
$this->load->view('form', $data);
} else {
$this->load->view('form', $data);
}
}
我的观点代码是:
echo form_open(current_url()).
form_error('title').
form_label('Title', 'title').
form_input(array('name' => 'title', 'id' => 'title'), set_value('title', $title)).
form_label('Other', 'other').
form_input(array('name' => 'other', 'id' => 'other'), set_value('other', 'test')).
form_submit('submit', 'Update').
form_close();
我的期望是没有显示错误消息,第一个输入字段会显示文本'我的标题'并且第二个字段将包含文本'其他'。如果我提交了表单,那么他们会显示已发布的值。
实际上,我总是会收到一条错误消息,指出第一个字段是必填字段,第一个字段在页面加载时始终为空,第二个字段正确填充文本'其他'。 / p>
如果我填写两个/任一字段并发布表单,则会返回包含发布数据的字段,这是正确的。我看不出我做错了什么,感谢任何帮助。
答案 0 :(得分:1)
仔细检查文件中的代码
/system/libraries/form_validation.php
第77行应
if (count($_POST) == 0)
而不是
if (!isset($_POST))
答案 1 :(得分:0)
请遵循此代码,希望对您有所帮助。 控制器
function test()
{
$this->load->library('form_validation');
$data['title1'] = 'My title';
$this->form_validation->set_rules('title', 'Title', 'trim|required');
if($this->form_validation->run() == FALSE) {
$this->load->view('form', $data);
} else {
$this->load->view('form', $data);
}
}
和表格
<?php
echo form_open('CONTROLLERNAME/test').
form_error('title').
form_label('Title', 'title').
form_input(array('name' => 'title', 'id' => 'title'), set_value('title', $title1)).
form_label('Other', 'other').
form_input(array('name' => 'other', 'id' => 'other'), set_value('other', 'test')).
form_submit('submit', 'Update').
form_close();
?>
在这里您传递视图中的标题数据,字段名称也是标题,因此每次表单标题字段打印值。