Codeigniter表单验证回调函数不起作用

时间:2009-09-01 09:58:35

标签: php codeigniter function validation callback

我写了一个简单的回调函数,但是没有用。我的其他回调(在同一个库文件中)工作正常,所以我猜问题与我的代码有关。

在回调函数中传递的参数采用PHP的一个形式,eval()被形成为函数本身中'if()'语句的一部分。

这是控制器中的内容:

$this->form_validation->set_rules('rating', 'Rating','required');
$condition = $this->input->post('rating')  . " != 'Excellent'";
$this->form_validation->set_rules('details', 'Details', 'required_conditional[' . htmlentities($condition) .']');

这是回调函数本身:

function required_conditional($str, $condition)
{
    if (eval(html_entity_decode($condition))) {
        if ($str == '') {
            $this->set_message('required_conditional', 'The %s field is required');
            return FALSE;
        }
        else {
            return TRUE;
        }
    }
}

任何想法为什么它不适合任何人?

谢谢,马特

3 个答案:

答案 0 :(得分:2)

这是因为eval评估语句而不是表达式。这将给你一个解析错误:

$test = "1 > 0";
if (eval($test)) { echo "echo!"; }

这将按照您的预期运作:

$test = "return 1 > 0;";
if (eval($test)) { echo "echo!"; }

答案 1 :(得分:2)

你不应该使用“callback_<function name>”吗?

答案 2 :(得分:2)

是否使用正确的语法来调用表单验证回调它以使用“callback _”