【问题标题】:Codeigniter validation helpCodeigniter 验证帮助
【发布时间】:2011-02-23 09:57:51
【问题描述】:

我正在编写一个系统,用户可以在其中根据 4 个下拉列表的值按需生成/运行查询。这些列表是根据许多因素动态生成的,但是在这一点上,我在使用 codeigniter 的内置验证类验证输入时遇到了问题。我想我的事情出了问题,我尝试查看codeigniter 网站,但我想我自己搞砸了。

在我看来(/dashboard/dashboard_index.php),我有以下代码块:

<?=form_open('dashboard/dashboard_add');?>
        <select ... name='selMetric'>
        <select ... name='selPeriod'>
        <select ... name='selSpan'>
        <select ... name='selTactic'>
        <input type="submit" name="submit_new_query" value="Add New Graph" class="minbutton" ></input>
<?=form_close();?>

然后在我的控制器中,我有以下两种方法:

function index() {

        $this->load->helper(array('form', 'url'));
        $this->load->library('validation');

        //population of $data

        $this->load->tile('dashboard/dashboard_index', $data);

    }

function dashboard_add()
    {
        $rules['selMetric'] = "callback_sel_check";
        $rules['selPeriod'] = "callback_sel_check";
        $rules['selSpan'] = "callback_sel_check";
        $rules['selTactic'] = "callback_sel_check";
        $this->validation->set_rules($rules);

        $fields['selMetric'] = "Metric";
        $fields['selPeriod'] = "Time Period";
        $fields['selSpan'] = "Time Span";
        $fields['selTactic'] = "Tactic";
        $this->validation->set_fields($fields);

        if ($this->validation->run() == false) {
            $this->index();
        } 
        else {
            //do stuff with validation information
        }
    }

这是我的问题。我可以让这些东西正确验证,但是对于我遇到的错误数量,我得到了

Unable to access an error message corresponding to your field name.

作为所有内容的错误消息。我认为我的问题是我将 $rules 和 $fields 的东西放在了错误的位置,但是我尝试了一些排列,但我一直弄错了。我希望我能得到一些关于放置东西的正确位置的建议。

【问题讨论】:

    标签: php validation codeigniter


    【解决方案1】:

    您是否在验证回调函数中使用与您的函数名称匹配的消息键(下例中的sel_check)设置错误消息?也就是说,如果你的回调函数被命名为sel_check,那么$this-&gt;validation-&gt;set_message 也必须引用sel_check。你的回调函数应该是这样的(原谅有点伪代码。我不知道你的验证函数实际上是做什么的):

    function sel_check($var) {
        if ($var == 'something') {
            $this->validation->set_message('sel_check', 'The %s field can not be the word "something"');
            return FALSE;
        } else {
            return TRUE;
        }
    }
    

    来自文档:

    错误消息是使用$this-&gt;validation-&gt;set_message 函数设置的。请记住,消息键(第一个参数)必须与您的函数名称匹配。

    此外,如文档页面顶部所述,您正在使用的验证库已被弃用,建议使用 form_validation library

    【讨论】:

    • 这正是我所缺少的。谢谢你。我会使用 form_validation,但我继承的站点在整个站点中散布着旧的验证类,对于这个简单的修复来说,这是一项艰巨的任务。不过,我会记住下一个新网站。
    • @Drew:我认为提及更新的验证库不会有什么坏处。很高兴听到这解决了您的问题!
    猜你喜欢
    • 2011-03-19
    • 2011-09-12
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    相关资源
    最近更新 更多