you probably just want to post to the same url, right? use 'url'=>'/'.$this->params['url']['url'] and you are fine!
PS: yes, i opened a ticket for this misbehavior in the current code and it is now closed in future versions 2.0 etc http://cakephp.lighthouseapp.com/projects/42648/tickets/1418-form-should-always-post-to-itself-as-default On 31 Mrz., 06:25, cricket <[email protected]> wrote: > Using 1.3.7 > > I'm having some trouble with routes again. Specifically, routes and > FormHelper. > > Router::connect( > '/admin/galleries/:gallery_id/edit_image/:image_id', > array( > 'admin' => 1, > 'controller' => 'galleries', > 'action' => 'edit_image' > ), > array( > 'gallery_id' => '[0-9]+', > 'image_id' => '[0-9]+', > 'pass' => array('gallery_id', 'image_id') > ) > ); > > echo $this->Html->link( > 'edit', > array( > 'admin' => 1, > 'controller' => 'galleries', > 'action' => 'edit_image', > 'gallery_id' => $data['Gallery']['id'], > 'image_id' => $image['id'] > ), > array('title' => 'edit this image') > ); > > This works peachy. The problem is with the edit form (Gallery.id = 1, > Image.id =42): > > echo $this->Form->create( > 'Image', > array( > 'url' => array( > 'admin' => 1, > 'controller' => 'galleries', > 'action' => 'edit_image', > 'gallery_id' => $this->data['Gallery']['id'], > 'image_id' => $this->data['Image']['id'] > ), > 'type' => 'file' > ) > ); > > Result: > /admin/galleries/edit_image/42/gallery_id:1/image_id:42 > > Similarly: > > Router::connect( > '/admin/galleries/:gallery_id/delete_image/:image_id', > array( > 'admin' => 1, > 'controller' => 'galleries', > 'action' => 'delete_image' > ), > array( > 'gallery_id' => '[0-9]+', > 'image_id' => '[0-9]+', > 'pass' => array('gallery_id', 'image_id') > ) > ); > > echo $form->create( > 'Gallery', > array( > 'url' => array( > 'admin' => 1, > 'controller' => 'galleries', > 'action' => 'delete_image', > 'gallery_id' => $this->data['Gallery']['id'], > 'image_id' => $this->data['Image']['id'] > ) > ) > ); > > Result: > /admin/galleries/delete_image/1/gallery_id:1/image_id:42 > > OK -- now try ... > > Router::connect( > '/admin/galleries/:id/delete_image/:image_id', > array( > 'admin' => 1, > 'controller' => 'galleries', > 'action' => 'delete_image' > ), > array( > 'id' => '[0-9]+', > 'image_id' => '[0-9]+', > 'pass' => array('id', 'image_id') > ) > ); > > echo $form->create( > 'Gallery', > array( > 'url' => array( > 'admin' => 1, > 'controller' => 'galleries', > 'action' => 'delete_image', > 'image_id' => $this->data['Image']['id'] > ) > ) > ); > > Result: > /admin/galleries/delete_image/1/image_id:42 > > alright ... > > echo $form->create( > 'Gallery', > array( > 'url' => array( > 'admin' => 1, > 'controller' => 'galleries', > 'action' => 'delete_image', > 'id' => $gallery_id, > 'image_id' => $this->data['Image']['id'] > ) > ) > ); > > Result: > /admin/galleries/delete_image/1/id:1/image_id:42 > > This game is rigged! > > As I understand it, if $this->data[ModelUsedForForm]['id'] is set, it > gets shoved into the URL *even if the URL is being explicitly > specified*. Mark Story's comment to this ticket [1] suggests that this > was fixed in 1.3. Anyone know the scoop on this? > > FWIW, I'm not editing/deleting the image in ImagesController because I > have 5 models which can be associated with Image and they all have > different requirements. However, I may now rethink this strategy and > put up with lots of switch()es in ImagesController. > > [1]http://cakephp.lighthouseapp.com/projects/42648/tickets/249-form-crea... -- 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 [email protected] For more options, visit this group at http://groups.google.com/group/cake-php
