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

当验证失败时,最后设置的“用户”变量将丢失。以前有人遇到过这个问题吗?有简单的解决方法吗?我的项目将在 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 回答