Hi David, Thanks a lot for the help. It was very usefull.
Thanks! Junior Grossi [EMAIL PROTECTED] On Fri, Oct 17, 2008 at 6:06 PM, otkcotsd <[EMAIL PROTECTED]> wrote: > --- In php-list@yahoogroups.com, "Junior Grossi" <[EMAIL PROTECTED]> wrote: >> >> Hi all, >> >> I want to change my url site... >> >> I have http://mysite.com/posts/show?id=1234 >> I want to change to http://mysite.com/posts/some-title-name >> >> I have looked the Zend site and I think that I have to do this: >> >> $route = new Zend_Controller_Router_Route( >> 'posts/:title', >> array( >> 'controller' => 'posts', >> 'action' => 'show' >> ) >> ); >> $router->addRoute('postShow', $route); >> >> I dont know how can i send the url and i dont know where i send and >> get the post_id in the controller... >> >> Am i doing something wrong? > > Junior, > > With the example above, there is no post id. If you try the url as > http://mysite.com/posts/some-title-name/id/10 > > Then inside your controller action you could do $id = > $this->_getParam('id'). With the way you have it, you'd need to look > up the post by the title. That could be tough since the title has > been mangled to work in a URL. Also, it means that your post titles > would need to be unique. Instead, I'd probably include the post id in > the url rewrite rule like so: > > $route = new Zend_Controller_Router_Route( > 'posts/:id/:title', > array ('controller' => 'posts', > 'action' => 'show' > ), > array ('id' => '\d+')); > $router->addRoute('postShow', $route); > > This means your url would be: > http://mysite.com/posts/10/some-title-name > > In this case, too, when you do $this->_getParam('id'), you'll get the > id (10 in this case). $this->_getParam('title') would give you > "some-title-name". If you go with this way, the title part is not > really important for finding the post, although I understand it can > help with SEO. > > The last parameter in the route setup ( array('id => '\d+') ) is a > regular expression to let the router know what are valid values for > that parameter posistion. In this case it's saying 1 or more digits. > If you were to try something like > > http://mysite.com/posts/1b2/some-title-name, the dispatcher would try > to route to the 1b2 action in your posts controller. You could also > deal with non-digit characters inside your controller rather than have > an error thrown. > > Hope this helps, > David > >