私は現在 CAKEPHP 2.3 を使用しており、ユーザーの情報を編集しようとしています。しかし、情報を送信しても、データベースの情報は更新されません。代わりに、挿入した新しい情報で新しいユーザーを作成します。新しいユーザーを作成するのではなく、ユーザーを更新したい。
edit.ctp の私のコードは次のとおりです。
<h1>Edit Account information</h1>
<?php
echo $this->Form->create('User', array('action' => 'edit'));
echo $this->Form->input('username', array('value' => $this->Session->read('Auth.User.username')));
echo $this->Form->input('name', array('value' => $this->Session->read('Auth.User.name')));
echo $this->Form->end('Submit');
?>
そして、ユーザーコントローラーの編集機能は次のとおりです。
public function edit() {
// debug($this->User->save($this->request->data));
$this->User->id = $this->Session->read('Auth.User.id');
$this->request->data['User']['id'];
if ($this->request->is('post')) {
if ($this->User->save($this->request->data)) {
$this->Session->setFlash(__('The User has been saved', true));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The User could not be saved. Please, try again.', true));
}
} else {
$this->request->data = $this->User->read(null);
isset($this->request->data['User']['password']);
}
}
ユーザーの編集ページに移動するためのインデックスは次のとおりです。
<h1>Users Home</h1>
<p>Welcome <?php print $this->Session->read('Auth.User.name');?> <br/></p>
<table border="0" width="200" text-align="center">
<tr>
<td width="50"><?php echo $this->Html->link('Log out', array('action' => 'logout')); ?></td>
<td width="50"><?php echo $this->Html->link('Edit', array('action' => 'edit')); ?></td>
<td width="50"><?php echo $this->Html->link('Add User', array('action' => 'add')); ?></td><!-- should only show for admin -->
<td width="50"><?php echo $this->html->link('Manage Users', array('action' => 'usermanage')); ?></td><!-- should only show for admin -->
</tr>
</table>
どうもありがとう。