0

モデル内の送信を検証するためのすべてのルールを含む validate() 配列から実際のメッセージを取得する方法を見つけようとしています。

基本的に私は ajaxily を投稿しており、検証に失敗したすべてのエラー メッセージをフォームに返したいのですが、検証に合格した場合でも送信しています。

だから私の中で

SubmissionsController私はこれをやっています:

if ($this->request->is('ajax')) {
    $formData = $this->Submission->invalidFields();
    $this->set(compact('formData'));
}

私のSubmissionモデルには次のものがあります。

 var $validate = array(
    'title' => array(
        'title' => array(
            'rule' => 'notEmpty',
            'required' => true,
            'allowEmpty' => false,
            'message' => 'Please enter a title'
        ),
        'minLength' => array(
            'rule' => array('minLength', 5),
            'message' => 'Please make your title longer (e.g. IJL John F. Kennedy donated his presidential salary to charity)'
        ),
        'maxLength' => array(
            'rule' => array('maxLength', 300),
            'message' => 'Your title needs to be shorter'
        ),
    ),
    'description' => array(
        'shortDescription' => array(
            'rule' => array('shortDescription'),
            'message' => 'Your description needs to be longer'
        ),
        'longDescription' => array(
            'rule' => array('longDescription'),
            'message' => 'Your description needs to be shorter'
        ),
    ),
    'source' => array(
        'source' => array(
            'rule' => 'notEmpty',
            'required' => true,
            'allowEmpty' => false,
            'message' => 'Enter a valid source URL (e.g. http://en.wikipedia.org/wiki/Penguins)'
        ),
        'website' => array(
            'rule' => 'url',
            'message' => 'Enter a valid source URL (e.g. http://en.wikipedia.org/wiki/Penguins)'
        ),
    ),
    'category' => array(
        'category' => array(
            'rule' => 'notEmpty',
            'required' => true,
            'allowEmpty' => false,
            'message' => 'Please choose a category'
        )


    )
);

私のSubmissions/json/submit.ctpファイルには次のものがあります。

<?php
$fragment = $this->element('errors/flash_error');
$toReturn = array(
    'formData' => $formData
    );

echo json_encode($toReturn);

有効なタイトルまたはその他の有効なフィールドを入力すると、何も表示されずにエラー メッセージが表示されます。

invalidFields()検証に合格したフィールドを返さないために必要なものが不足していますか?

編集:

Leo が以下で提案したように、以前は save を呼び出していませんでしたinvalidFields()

正しいコードは次のとおりです。

            if ($this->Submission->save($this->request->data)) {
                $formData = null;
            } else {
                $formData = $this->Submission->invalidFields();
            }
            $this->set(compact('formData'));
4

1 に答える 1

0

save()呼び出しまたはvalidates()による検証なしでinvalidFields()を呼び出しています!

于 2012-06-25T17:53:20.673 に答える