Php CodeIgniter form_error返回错误消息,set_value在第一页加载时不返回任何内容

Php CodeIgniter form_error返回错误消息,set_value在第一页加载时不返回任何内容,php,codeigniter,Php,Codeigniter,使用CodeIgniter的表单验证类时,视图中的Form_errors始终显示错误消息。此外,使用set_value方法永远不会用正确的值填充字段,除非没有对其进行验证 我已经扩展了form_验证类,但只是添加了一个我需要的新方法,完全删除代码并没有什么区别 我的控制器的代码是: function test() { $data['title'] = 'My title'; $this->form_validation->set_rules('title', 'Tit

使用CodeIgniter的表单验证类时,视图中的
Form_errors
始终显示错误消息。此外,使用
set_value
方法永远不会用正确的值填充字段,除非没有对其进行验证

我已经扩展了form_验证类,但只是添加了一个我需要的新方法,完全删除代码并没有什么区别

我的控制器的代码是:

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();
我希望不会显示任何错误消息,第一个输入字段将显示文本“My title”,第二个字段将显示文本“other”。如果我提交表单,那么它们将显示发布的值

实际上,我总是收到一条错误消息,说第一个字段是必需的,当页面加载时,第一个字段总是空的,第二个字段正确地填充了文本“other”


如果我同时填写两个/任意一个字段并发布表单,则这些字段将返回post数据,这是正确的。我看不出我做错了什么,非常感谢您的帮助。

请遵循此代码,我希望它能对您有所帮助。 控制器

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();
?>


在这里,您可以在视图中传递标题数据,字段名称也是标题,因此每次表单字段的标题打印值都是如此。

请仔细检查文件中的代码

/system/libraries/form_validation.php

第77行应该是

if (count($_POST) == 0)
而不是

if (!isset($_POST))

提交第一个字段为空时出现错误?该错误在提交任何表单之前显示。请尝试使用仅显示表单的单独方法调用表单。如果我注释掉验证规则,它将按预期工作,但随后我的整个表单没有针对它的验证。我可以让验证规则只在post上应用,但根据文档,我不需要这样做。您是否尝试过加载代码而不向其中传递数据?而不是
$this->load->view('form',$data)尝试
$this->load->view('form')我已经扩展了我的表单验证来处理这个问题,并且验证工作正常(仍然不理解为什么不工作),但是
set\u value()
仍然没有正确填充字段。此外,当发送POST数据后没有失败时,此修复程序也会停止表单验证工作。如果有错误,它会按预期工作,但在没有错误时不会工作。看起来好像对内核做了一些更改。我扩展了这些类,所以不确定这些更改是如何发生的,但是有了新的CodeIgniter副本,现在情况好多了。谢谢我会接受这个答案。