noo...you can pass an array into 'url' key in $this->Form->create -- Lep pozdrav, Tilen Majerle http://majerle.eu
2011/3/31 cricket <zijn.digi...@gmail.com> > I found the solution. In debugging inside FormHelper, I was paying > attention to the block of code after: > > if (empty($options['url']) || is_array($options['url'])) { > > ... because I was passing an array. It took me awhile to notice that, > if the the url is a string, it's passed unmolested. So: > > array( > 'url' => Router::url(array( > 'admin' => 1, > ... > > > On Thu, Mar 31, 2011 at 12:25 AM, cricket <zijn.digi...@gmail.com> 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-create-alters-specified-url > > > > -- > 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