我写了一个简单的回调函数,但是没有用。我的其他回调(在同一个库文件中)工作正常,所以我猜问题与我的代码有关。
在回调函数中传递的参数采用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;
}
}
}
任何想法为什么它不适合任何人?
谢谢,马特
答案 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 _”