-1

我有从 youtube 视频复制的表单验证,但它是使用 cakephp 1.3 编码的。所以我很难将它迁移到 2.1

CommentsController.php - 函数 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 天大的初级网络开发人员

4

3 回答 3

3

使用您当前的代码,$error仅在提交的表单未验证时设置,但在表单正确验证时未设置。在吐出之前,您需要在视图中添加一个检查,例如:

if(isset($error)) {
    echo $error;
} else {
    echo "Form is valid"; // Optionally echo something else if everything went OK.
}

但这不可能是你的全部观点?如果存在任何验证错误,该位将仅显示验证错误,而不会显示其他任何内容。

于 2012-05-08T11:26:15.550 回答
1

我的猜测是评论正在验证,所以这就是为什么$error永远不会被设置,你只需要在你的视图文件中检查这个:

if(isset($error)) {
    echo $error;
}
于 2012-05-08T11:26:41.943 回答
0

您还需要更改这行代码:

$this->RequestHandler->isAjax()

到:

$this->request->is('ajax');

由于 AjaxHelper 从 cakephp 2.x 开始贬值

于 2012-05-31T11:48:19.417 回答