我有这个观点:
<?php echo form_open(); ?>
<?php echo form_input('username', '', ''); ?>
<?php echo form_submit('submit', 'Submit'); ?>
<?php echo form_close(); ?>
<?php echo validation_errors(); ?>
和这个控制器方法:
function test() {
$username = $this->input->post('username');
$this->form_validation->set_rules($username, 'Username', 'required|min_length[4]');
if ($this->form_validation->run() !== FALSE) {
echo 'Tada!';
}
$this->load->view('test');
}
但是当我将用户名字段留空时,没有任何反应。但是,如果我在其中键入内容,则会告诉我该字段是必需的。我已经下载并给CI一个新安装了近十次,尝试加载有没有不同的帮助等等。它变得非常令人沮丧,请帮忙。
答案 0 :(得分:1)
尝试使用:
$this->form_validation->set_rules('username', 'Username', 'required|min_length[4]');
答案 1 :(得分:1)
问题在于set_rules的第一个参数,即字段名称。
您传递的 $ username 基本上是设置字段名称以验证用户输入字段中的内容。如果您在输入框中输入“username”,您会看到表单已经过验证。
更改行
$this->form_validation->set_rules($username, 'Username', 'required|min_length[4]');
到
$this->form_validation->set_rules('username', 'Username', 'required|min_length[4]');
答案 2 :(得分:1)
可能是这一行的问题
<?php echo form_open(); ?>
如果将其留空,它基本上会发送回控制器本身并仅调用构造和索引函数。在这种情况下,处理表单处理的函数是“test()”
试试这个
<?php echo form_open('yourControllerName/test'); ?> //test is the function dealing with
如果它不起作用,试试这个
<?php echo form_open('test'); ?>