-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 日間のジュニア Web 開発者です。

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 に答える