I had the same problem. The cookbook states that you should not use postlinks inside another form.
I think removing the Account form will do the trick.
hope this helps,
Els
Move the postlink
On Friday, August 3, 2012 3:32:33 PM UTC+2, amprodes wrote:
--#### What I did1.- This is my model:------------------------------------------------------------ -------------------------- <pre>class Account extends AppModel {public $name = 'Account';public $belongsTo = array('Client' => array('className' => 'Client','foreignKey' => 'client_id'),'Accounttype' => array('className' => 'Accounttype','foreignKey' => 'accounttype_id'));public $hasMany = array('Event' => array('className' => 'Event','foreignKey' => 'account_id','dependent'=> true),'Plot' => array('className' => 'Plot','foreignKey' => 'account_id','dependent'=> true),'Widget' => array('className' => 'Widget','foreignKey' => 'account_id','dependent'=> true));}</pre>------------------------------------------------------------ -------------------------- 2.- **This is my controller:**------------------------------------------------------------ -------------------------- <pre>class AccountsController extends AppController {public $helpers = array ('Html','Form');function index($client_id) {$this->set('accounts', $this->Account->find('all', array('recursive' =>1, 'conditions' => 'Account.client_id ='. $client_id)));$this->set('client_id', $client_id);}public function view($id = null) {$this->Account->id = $id;$this->set('account', $this->Account->read());}public function add($client_id) {if ($this->request->is('post')) {if ($this->Account->save($this->request->data)) { $this->Session->setFlash('Your account has been added.');if($this->request->data['Account']['accounttype_id'] == 2){ $this->redirect(array('controller' => 'twitteraccounts', 'action' => 'connect')); }}}$accounts = $this->Account->find('list');$accounttype = $this->Account->Accounttype->find('list', array('fields' => array('Accounttype.id', 'Accounttype.description'))); $this->set('client_id', $client_id);$this->set('accounts', $accounts);$this->set('accounttype', $accounttype);}function edit($id = null, $client_id) {$this->Account->id = $id;$this->set('id', $id);if ($this->request->is('get')) {$this->request->data = $this->Account->read();} else {if ($this->Account->save($this->request->data)) { $this->Session->setFlash('Your account has been updated.');$this->redirect(array('action' => 'index', $client_id));}}$accounts = $this->Account->find('list');$accounttype = $this->Account->Accounttype->find('list', array('fields' => array('Accounttype.id', 'Accounttype.description'))); $this->set('accounts', $accounts);$this->set('accounttype', $accounttype);$this->set('client_id', $client_id);}public function delete($id, $client_id) {$id = $this->request->params['pass'][0]; //the request must be a post request//that's why we use postLink method on our view for deleting userif( $this->request->is('get') ){$this->Session->setFlash('Delete method is not allowed.'); $this->redirect(array('action' => 'index',$client_id));//since we are using php5, we can also throw an exception like://throw new MethodNotAllowedException();}else{if( !$id ) {$this->Session->setFlash('Invalid id for Account'); $this->redirect(array('action'=>'index',$client_id)); }else{//delete userif( $this->Account->delete($id, $cascade = true) ){//set to screen$this->Session->setFlash('Account was deleted.'); //redirect to users's list$this->redirect(array('action'=>'index',$client_id)); }else{//if unable to delete$this->Session->setFlash('Unable to delete Account.'); $this->redirect(array('action' => 'index'));}}}}}</pre>------------------------------------------------------------ -------------------------- 3.- **This is the view:**------------------------------------------------------------ -------------------------- echo $this->Html->addCrumb('Clients', '/clients'); echo $this->Html->addCrumb('Accounts', '/accounts'); echo $this->Form->create('Account'); foreach($accounts as $account): ?><table cellspacing=0 cellpadding=0 style="width:600px"><tr><td><?php echo $account['Accounttype']['description'] ?></br> </td><td><?php echo $this->Html->link('Edit', array('action' => 'edit', $account['Account']['id'], $client_id)); ?></td><td><?php // echo $this->Html->link('Del', array('action' => 'delete', $account['Account']['id'], $client_id)); ?></td><td><?php echo $this->Html->link('Add Event', '/events/add/'.$account['Account']['id'], array('action' => 'add', $account['Account']['id'])); ?></td> <td><?php echo $this->Form->postLink('Delete',array('action' => 'delete', $account['Account']['id'], $client_id),null, 'Are you sure?');?></td> </tr></table><?phpendforeach; echo $this->Form->end();?><div style="float:right"><?php echo $this->Html->link('Back', array('controller' => 'clients', 'action' => 'index')); ?></div>------------------------------------------------------------ -------------------------- What happenedEverything works great but delete button won't delete the last row remaining in accounts list i meant delete works but not in the last row remaining and i think the problem is when the delete postLink() get render, it formed well in all rows but not in the first one the "(form blablabla) (/form)" its not created in the first row and i just get (input blablabla) without form tag so when i click "delete" nothing happens! just get # at the end of the urlWhat I expected to happeni expect to get a beautiful blank list saying "there are not accounts assigned to this client" when i delete the last row!pd: thanks for help me out! and sorry for my bad english!
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com.
To unsubscribe from this group, send email to cake-php+unsubscribe@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en-US.
No comments:
Post a Comment