我从youtube视频复制了这个表单验证,但它是使用cakephp 1.3编码的。所以我很难将其迁移到2.1
CommentsController.php - function validate_form()
function validate_form()
{
if($this->RequestHandler->isAjax())
{
$this->request->data['Comment'][$this->request['form']['field']] = $this->request['form']['value'];
$this->Comment->set($this->request->data);
if($this->Comment->validates())
{
$this->autorender = FALSE;
}
else
{
$error = $this->validateErrors($this->Comment);
$this->set('error', $error[$this->request->params['data']['field']]);
}
}
}
validate_form.ctp
<?php echo $error; ?>
错误:
Undefined variable: error [APP\View\Comments\validate_form.ctp, line 1]
为什么它未定义?请帮助我,如果我不这样做,我的老板会解雇我。我只是一个5天大的初级网络开发者的试用员工
答案 0 :(得分:3)
使用您当前的代码,$error
仅在提交的表单未验证时设置,但在表单确实正确验证时未设置if(isset($error)) {
echo $error;
} else {
echo "Form is valid"; // Optionally echo something else if everything went OK.
}
。在吐出之前,您需要在视图中添加一个检查,例如:
{{1}}
但这可能不是你的整个观点?该位仅显示验证错误(如果存在),但不显示任何其他错误。
答案 1 :(得分:1)
我的猜测是评论正在验证,这就是为什么永远不会设置$error
的原因,您只需要在视图文件中检查这一点:
if(isset($error)) {
echo $error;
}
答案 2 :(得分:0)
您还需要更改此行代码:
$this->RequestHandler->isAjax()
为:
$this->request->is('ajax');
因为AjaxHelper是从cakephp 2.x折旧的