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) が、実際にはこのフィールドはビューにも表示されません。'on' => 'create'が内部で定義されている場合、データ編集時にこの検証規則を回避できます。

また、デバッグ目的で var_dump() の代わりに CakePHP debug()を使用することをお勧めします。

于 2012-07-21T08:13:30.893 に答える