【问题标题】:CodeIgniter Validation Not Displaying On FormCodeIgniter 验证未显示在表单上
【发布时间】:2018-10-16 07:28:21
【问题描述】:

这里有另一个CI Validation 错误。我已经尝试过搜索,从我所见,我拥有的代码是可以的。验证运行 - 如果我只是从控制器中回显一个“Validation Failed”字符串,它就会显示出来。

但我似乎无法让它在实际视图中显示。即使我在视图中有一行(即 echo validation_errors(); ),即使失败 validation 也没有错误输出。

任何指针将不胜感激:)

控制器

public function add() {
    if ($this->form_validation->run('user_add_edit') == FALSE)
    {
        //Validation failed
        $this->load->view('templates/header_generic');
        $this->load->view('templates/navigation');
        $this->load->view('user/add_user_form');
        $this->load->view('templates/footer_generic');
    }
    else
    {
        echo "Form validated!";
    }
}

查看(部分)

                        <div class="panel-body">

                        <?php echo validation_errors(); ?>

                        <?php echo form_open('user/add'); ?>
                            <label for="email">
                                Email Address
                            </label><br />
                            <div class="form-group input-group <?php echo null === form_error('email') || is_null(form_error('email')) ? 'form-group has-error' : ''; ?>">
                                <span class="input-group-addon">@</span>
                                <?php echo form_input($email_attr, set_value('email')); ?>
                            </div>
                            <br />
                            <?php echo form_error('email');?>
                            <br />
                            <?php echo form_fieldset("Password"); ?>
                            jfkdjflkdjflks
                            <?php echo form_fieldset_close(); ?>
                            <br />
                            <?php echo form_submit("submit", "Add New User", "class='btn btn-success'"); ?>
                        </form>
                    </div>

表单验证

$config = array(
'user_add_edit' => array(
    array(
        'field' => 'email',
        'label' => 'Email Address',
        'rules' => 'trim|required|valid_email|is_unique[user.email]',
        'errors'    => array(
            'required'  => 'You must enter a %s',
            'valid_email'   => '%s is not a valid email address',
            'is_unique'     => 'This email address already exists'
        )
    ),

【问题讨论】:

  • 哦,我发现这是一个可能的错误,所以我可以确认在配置中设置了base_url。

标签: php codeigniter validation codeigniter-3


【解决方案1】:

MY_Form_validation.php 设置不当可能会影响通过配置文件设置表单规则。

修复

在application/libraries/MY_Form_validation.php - 用下面的代码替换你的构造函数,或者只是通过添加 $config 参数来遵循下面的更改。

function __construct($config = array()){
    parent::__construct($config);
    $this->CI =& get_instance();
}

application/config/form_validation.php 内部发生 $config 变量的值被覆盖的可能性。也检查一下。

替代方案:

从控制器方法加载 form_validation.php 配置文件,并将相关配置项传递给 set_rules(..),如下所示。

public function add() {
    $this->load->config('form_validation');
    $this->form_validation->set_rules($this->config->item('user_add_edit'));

    if ($this->form_validation->run() == FALSE)
    {
        //Validation failed
        $this->load->view('templates/header_generic');
        $this->load->view('templates/navigation');
        $this->load->view('user/add_user_form');
        $this->load->view('templates/footer_generic');
    }
    else
    {
        echo "Form validated!";
    }
}

【讨论】:

  • 感谢您的建议 - 虽然我没有扩展 CI Form Validation 库。我确实创建了MY_Form_validation 库扩展并尝试了它。如果我只是调用通常的$this-&gt;load-&gt;library(form_validation) 库,则没有任何改变。如果我打电话给$this-&gt;load-&gt;library(MY_Form_validation,它会告诉我课程CI Form Validation 不在我的图书馆中。我真的不想重写整个验证库。
  • 没关系,先生。无论如何,我添加了一个替代方案。
  • 替代方案让它工作。奇怪,但我在做生意。谢谢你:)
猜你喜欢
  • 1970-01-01
  • 2014-02-20
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多