当CakePHP验证失败时,PHP变量将丢失

时间:2013-05-30 22:33:29

标签: php cakephp

我在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'
            )
        )));
    }
}

验证失败时,"用户"向末端设置的变量将丢失。以前有人遇到过这个问题吗?有一个简单的解决方案吗?我的项目将在12个小时内到期,这看起来非常糟糕。

由于

1 个答案:

答案 0 :(得分: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块仍将执行。