0

CakePHP でのデータ検証に問題があります。データ検証が失敗するたびに、コントローラーに設定された変数が失われ、フォームが台無しになります。

add() のコントローラ コードは次のとおりです。

function add() {
    $joins = array(
        array(
            'table' => 'groups_users',
            'alias' => 'GroupUser',
            'type' => 'inner',
            'conditions' => array(
                'User.id = GroupUser.user_id'
            )
        ),
        array(
            'table' => 'groups',
            'alias' => 'Group',
            'type' => 'inner',
            'conditions' => array(
                'GroupUser.group_id = Group.id'
            )
        )
    );

    if (!empty($this->data)) {
        if ($this->Course->save($this->data)) {
            $this->Session->setFlash('Course created.');
            $this->redirect(array('action'=>'index'));
        }
    } else {
        $this->set('users', $this->Course->User->find('list', array(
            'fields' => array('User.surname_firstname'),
            'order' => array(
                    'User.surname_firstname'
            ),
            'joins' => $joins,
            'conditions' => array(
                'Group.name' => 'teachers'
            )
        )));
    }
}

検証が失敗すると、最後に設定された「users」変数が失われます。誰もこの問題を以前に経験したことがありますか? 簡単な修正はありますか?私のプロジェクトは 12 時間後に締め切られます。

ありがとう

4

1 に答える 1

1

変化する

if (!empty($this->data)) {
    if ($this->Course->save($this->data)) {

の中へ

if (!empty($this->data) && $this->Course->save($this->data)) {

が空でない場合$this->dataは保存が試行され、保存が成功すると成功メッセージが表示されます。$this->dataが空の場合、save は呼び出されず、$this->data無効なデータが含まれている場合、save は失敗し、else ブロックは引き続き実行されます。

于 2013-05-30T22:40:35.013 に答える