我在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个小时内到期,这看起来非常糟糕。
由于
答案 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块仍将执行。