In bootstrap.php
, where you set routes, I'm having a hard time getting them to work. I read some documentation a while ago that I can't seem to find again that explains them. Here is one of my examples
Route::set('products', 'products/(type)', array('type' => '.+'))
->defaults(array(
'controller' => 'articles',
'action' => 'view_product',
'page' => 'shock-absorbers',
));
I thought that would mean a request like products/something
would load up the articles
controller, and the action_view_product()
method. But I can't get it to work.
Can someone please explain to me exactly how they work, and what all the method parameters are?
The parentheses indicate optional parts (the regex will match if they are missing). These can be static and/or contain named variables. The angle brackets indicate a named variable in the route which is accessible in the controller via:
$this->request->param('type');
I wrote the official routing guide which you can read here, it should answer all of your questions.
uff, sorry, lower then and greater then signs doesn't shows correctly
'products/(type)' should be 'products/(<type>)'
I thought that would mean a request like products/something would load up the articles controller, and the action_view_product controller. But I can't get it to work.
You got the bolded part wrong. It will actually load action_view_product method of the articles controller:
class Controller_Articles extends Controller {
public function action_view_product() {
$params = $this->request->param();
// if the uri is `products/something' then $params['type'] == 'something'
}
}
EDIT:
Oh my god oh your god why didn't I notice!!!
The actual problem lies within your route pattern! It should have been products/(<type>)
, with the angle brackets. Those will hint Kohana that you intended the 'type' to be a parameter name, instead of a literal.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With