Могу ли я сделать это с одним определением маршрута в Kohana 3? - PullRequest
0 голосов
/ 13 декабря 2010

Вот один из моих маршрутов ...

Route::set('products', 'our-products(/<product>)')
->defaults(array(
    'controller' => 'products',
    'action'     => FALSE
)); 

Посетив /our-products, вы можете попасть в индекс товаров (который будет называться Controller_Products::action_index()).

Я хочу, чтобы маршрут работал следующим образом: при добавлении дополнительного продукта он должен вызывать другой метод, т. Е. Если запрашивается /our-products/product-a, вместо вызова Controller_Products::action_index() он вызывает что-то вроде Controller_Products::action_get('product-a').

Я понимаю, что мог бы легко сделать это с двумя маршрутами, но я бы предпочел сделать это с одним.

Я также думал о проверке параметра в action_index() и вызове другого метода, но это звучало ужасно.

Я также пытался __call(), но получил эту очень необычную ошибку ...

Неустранимая ошибка: объявления классов не могут быть вложены в /home/user/public_html/~new/system/classes/date.php в строке 3

Можно ли делать то, что я хочу? Какой самый лучший способ?

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 декабря 2010

Перегрузить действие в методе Controller::before(), например:

if ($this->request->param('product'))
{
    $this->request->action = 'get';
}
0 голосов
/ 13 декабря 2010
  1. Проверьте product параметр в action_get() методе и вызовите action_index() (или другое), если пусто.
  2. Прочтите эту тему о вашей необычной ошибке.
...