I guess in your view you have to pass in the id (echo
$this->Form->input('id');). This should include a hidden id field.
I wonder why it works the first time (without leaving a field blank).
Are you sure the user gets edited and not a new user created? Because
when you save $this->request->data, the data shouldn't contain the id if
you didn't pass it from the view!
On 07/11/2012 03:20 PM, Banana Man wrote:
Hi,
I am trying to setup an Edit User authentication action. I have
authentication working fine for adding a user but when i try to edit a
user i am running into a problem.
If i try to edit a user when all information supplied passes
validation it works fine (URL: http://localhost/users/edit/3). If
however i leave a textfield blank when i am validating it against
'notEmpty' the first time i hit the form submit button it works as
expected and reloads the edit user page with the validation error
displayed (URL: http://localhost/users/edit/3). If i do nothing and
try to submit the form again with the blank textfield i now get
redirected to http://localhost/users/edit with an Invalid User message
"*Error: * The requested address *'/users/edit'* was not found on this
server."
<!-- app/Controller/UsersController.php -->
public function edit($id = null) {
$this->User->id = $id;
if (!$this->User->exists()) {
throw new NotFoundException(__('Invalid user'));
}
if ($this->request->is('post') || $this->request->is('put')) {
if ($this->User->save($this->request->data)) {
$this->Session->setFlash(__('The user has been saved'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The user could not be
saved. Please, try again.'));
}
} else {
$this->request->data = $this->User->read(null, $id);
}
}
<!-- view/users/edit.ctp -->
<div class="users form">
<?php echo $this->Form->create('User', array('action' => 'edit'));?>
<fieldset>
<legend><?php echo __('Edit User'); ?></legend>
<?php
echo $this->Session->flash();
echo $this->Form->input('firstname', array('label' => 'First Name'));
echo $this->Form->input('secondname', array('label' => 'Second Name'));
echo $this->Form->input('address_01', array('label' => 'Address Line 1'));
echo $this->Form->input('address_02', array('label' => 'Address Line 2'));
echo $this->Form->input('address_03', array('label' => 'Address Line 3'));
echo $this->Form->input('address_04', array('label' => 'Address Line 4'));
echo $this->Form->input('tel_01', array('label' => 'Telephone'));
echo $this->Form->input('email');
echo $this->Form->hidden('role', array('value' => 'customer'));
?>
</fieldset>
<?php echo $this->Form->end(__('Submit'));?>
</div>
<div class="actions">
<h5><?php echo __('Actions'); ?></h5>
<ul>
<li><?php echo $this->Html->link(__('List Users'), array('action' =>
'index'));?></li>
</ul>
</div>
Does anyone know why i am getting redirected on the second submit?
Thanks!
--
Our newest site for the community: CakePHP Video Tutorials
http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and
help others with their CakePHP related questions.
To unsubscribe from this group, send email to
cake-php+unsubscr...@googlegroups.com For more options, visit this
group at http://groups.google.com/group/cake-php
--
Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.
To unsubscribe from this group, send email to
cake-php+unsubscr...@googlegroups.com For more options, visit this group at
http://groups.google.com/group/cake-php