1

我正在尝试为 cakephp 中的登录用户创建“编辑”个人资料页面。这将是添加/编辑有关用户的信息的功能。我在 $this->User->save($this->data) 函数期间遇到错误,我不明白问题出在哪里。

public function edit() {
   $this->User->id = $this->Auth->User('id');

    if ($this->request->is('post')) {
        if ($this->User->save($this->data)) {
            $this->Session->setFlash(__('The user has been saved'), 'flash_success');
           // $this->redirect($this->Auth->redirect());
        } else {
            var_dump($this->invalidFields());

            $this->Session->setFlash(__('The user could not be saved. Please, try again.'), 'flash_failure');
        }
    } else {
        //autocompleto il form
        $this->data = $this->User->read(null, $this->Auth->User('id'));
    }
}

观点是:

<?php 
echo $this->Form->create('User',array('action' => 'edit'));
echo $this->Form->input('name', array('label'=> 'Name'));
echo $this->Form->input('surname', array('label'=> 'Surname'));
echo $this->Form->input('id', array('type'=> 'hidden'));
echo $this->Form->end(__('Submit')); 
?>
4

1 回答 1

1

我看到你使用Auth组件。如果您的Auth::authorize默认值被覆盖,请确保您授予用户适当的权限来执行数据写入(也许他只允许读取)。

另一个问题可能是您$validate在模型中的声明,您在其中强制用户输入字段值(使用'required' = true),但实际上该字段甚至没有显示在 View 上。'on' => 'create'如果在内部定义,您可以避免在数据编辑时使用此验证规则。

此外,我建议使用 CakePHP debug()而不是 var_dump() 进行调试。

于 2012-07-21T08:13:30.893 回答