未定义的变量:错误 - cakephp

时间:2012-05-08 09:47:08

标签: php jquery ajax cakephp

我从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天大的初级网络开发者的试用员工

3 个答案:

答案 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折旧的