【问题标题】:Codeigniter validation_errors() always returning emptyCodeigniter validation_errors() 总是返回空
【发布时间】:2012-10-12 09:39:17
【问题描述】:

我有一个简单的表单,它使用以下验证规则添加到我的数据库中。 “表单”在 autoload.php 中。

当任何验证规则被破坏时,页面不会显示错误输出,当没有任何验证规则被破坏时,表单会按预期进行。

这是我的控制器功能

  public function add()
{

    $this->load->library('form_validation');
    $this->load->library('layout');
    // field name, error message, validation rules
    $this->form_validation->set_rules('type', 'Type', 'required|xss_clean');
    $this->form_validation->set_rules('title_type', 'Title type', 'required|xss_clean');
    $this->form_validation->set_rules('first_name', 'First name', 'trim|required|min_length[1]|max_length[150]|xss_clean');
    $this->form_validation->set_rules('surname', 'Surname', 'trim|required|min_length[1]|max_length[150]|xss_clean');
    $this->form_validation->set_rules('job_title', 'Job title', 'trim|min_length[5]|max_length[300]required|xss_clean');
    $this->form_validation->set_rules('office_number', 'Office number', 'trim|min_length[2]|max_length[11]|xss_clean');
    $this->form_validation->set_rules('telephone', 'Telephone', 'trim|numeric|xss_clean');
    $this->form_validation->set_rules('email', 'Email', 'trim|valid_email|xss_clean');
    $this->form_validation->set_rules('website', 'Website', 'trim|prep_url|xss_clean');
    $this->form_validation->set_rules('background', 'Background', 'trim|xss_clean');


    $data = array(
        'title' => 'Add staff member'
    );

    if ($this->form_validation->run() == FALSE) { //Was errors

        $this->session->set_flashdata('message','You missed some details, please try again.');

        $this->layout->load('default', 'add_person', $data);
    } else {
        $this->people_model->add_person();
        $this->layout->load('default', 'added_person', $data);
    }


} //add

在我的表单视图中,我有

    <?php echo validation_errors('<p class="msg msg-error">') ?>

谁能看到我做错了什么,我已经尝试了我能想到的一切。

validation_errors() 的 var_dump 给出

string '' (length=0)

编辑:奇怪的是,如果我交换这两行,我得到:

    $this->load->library('form_validation');
    $this->load->library('layout'); //lib code http://pastebin.com/K1rBV512

Message: Undefined property: People::$form_validation

Filename: controllers/people.php

Line Number: 27

【问题讨论】:

  • 你在使用 HMVC 扩展吗?
  • @Damien 不,我唯一使用的第 3 方是布局库。这是:pastebin.com/K1rBV512

标签: php validation codeigniter


【解决方案1】:

我相信问题在于您的看法,而不是控制器。 问题似乎是你的 $_POST 是空的,没有什么可以验证的。

这似乎没有答案,希望它会帮助其他人。

如果发生这种情况,请在 $_POST 上尝试 var_dump。如果为空,请确保您有

然后确保您的输入带有“name”属性,而不是“id”

希望这对任何人都有帮助

【讨论】:

    【解决方案2】:

    您需要将$data 数组传递给您的模型。所有输入都需要从VIEW 页面获取POST。您没有显示任何具体错误,因此很难诊断您的问题。

    确保你POST在你的MODEL中的所有输入都是这样的:

    `'first_name' => $this->input->post('first_name'),`
    


    在你的view:

    <?php echo validation_errors('<p class="msg msg-error">') ?>
    

    在您的view 中将其更改为:

    <p class="msg msg-error"><?php echo validation_errors(); ?></p>
    

    【讨论】:

    • 在我的模型中就是这样,数据进入db很好。
    【解决方案3】:

    该错误似乎与会话无关,但我没有看到您正在加载 session 库。

    【讨论】:

    • 自动加载数据库和会话
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2019-04-20
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多