2

そのため、検証エラーは追加アクションには表示されますが、編集アクションには表示されません。ここに私のコントローラーからのスニペットがあります:

ここで、期待どおりの検証エラー メッセージが表示されます。

    public function add() {
        if ($this->request->is('post')) {
            if ($this->User->save($this->request->data)) {
                $this->Session->setFlash(__('The user has been saved.'));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The user could not be saved. Please try again.'));
            }
        }
        $this->set('clients', $this->User->Client->find('list'));
    }

しかし、ここではありません:

    public function edit($id = null) {
        $this->User->id = $id;
        if (!$this->User->exists()) {
            throw new NotFoundException(__('Invalid user'));
        }
        if ($this->request->is('post') || $this->request->is('put')) {
            if ($this->User->save($this->request->data)) {
                $this->Session->setFlash(__('The user has been saved.'));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The user could not be saved. Please, try again.'));
            }
        } else {
            $this->request->data = $this->User->read(null, $id);
            unset($this->request->data['User']['password']);
        }
        $this->set('user', $this->User->read());
        $this->set('clients', $this->User->Client->find('list'));
    }
4

2 に答える 2

3

正しく思い出せば、保存に失敗した後に read() 呼び出しを使用すると、検証エラーがクリアされます。

そこに..私はそれを見つけまし

于 2012-04-16T13:51:26.957 に答える
0

setFlash('ユーザーを保存できませんでした') メッセージが発生していますか?

debug($this->User->validationErrors) の出力は何ですか - setFlash 失敗メッセージの後に追加します

投稿配列には、保存する必要があるすべてのフィールドが含まれていますか? $validate に投稿配列にない必須フィールドがありますか? (Cake はエラーを登録しますが、フォームにフィールドがない限り表示できません)。または、失敗しているがフォームにフィールドを表示していない別の検証ルールですか?

于 2012-04-16T13:22:40.043 に答える