Is it possible in CakePHP to have URL aliases in routes.php? Or by what other means can achieve something equivalent:
Lets assume I have some paginated views. Among the possible orderings there are particular ones I want to bind to a simple URL. E.g.:
- http://example.com/headlines => http://example.com/posts/listView/page:1/sort:Post.created/direction:desc
- http://example.com/hottopics => http://example.com/posts/listView/page:1/sort:Post.view_count/direction:desc etc.
How do I add parameters to a Router::connect()? Pseudo code:
Router::connect('/'.__('headlines',true),
array(
'controller' => 'posts',
'action' => 'listView'
'params' => 'page:1/sort:Post.created/direction:desc',
)
);
Note that the Router “translates” a URL into Controllers, Actions and Params, it doesn’t “forward” URLs to other URLs. As such, write it like this:
I don’t think
'/'.__('headlines', true)would work, since the app is not sufficiently set up at this point to translate anything, so you’d only always get the word in your default language back. Also, you couldn’t switch the language anymore after this point, the first use of__()locks the language.You would need to connect all URLs explictly. To save you some typing, you could do this:
That will create a
$this->param['named']['lang']variable, which you should use in the URL anyway.