Передача дополнительных параметров через конфигурацию маршрута в Кохане - PullRequest
0 голосов
/ 21 декабря 2009

Существует ли механизм передачи дополнительных параметров действиям контроллера в Kohana?

Например:

$config['article/([0-9]+)'] = array('path' => 'news/show/$1', 
                                    'params' => array(
                                       'param1' => 'some_stuff',
                                    ));

Кажется, что в документации по маршрутизации Kohana это не обсуждается. Но есть ли способ заставить это работать.

Ответы [ 5 ]

1 голос
/ 18 августа 2010

Это изменилось в Kohana 3, вы должны изменить свой файл bootstrap.php, чтобы сделать эту работу.

из неофициальной вики

http://kerkness.ca/wiki/doku.php?id=routing:routing_basics

Basic Route with 2 parameters

Unlike KO2, KO3 Routing default in your bootstrap does not handle 2 or more parameters like example.com/<controller>/<action>/<param1>/<param2>

В вашем файле bootsrtap.php ...

  Route::set('default', '(<controller>(/<action>(/<id1>(/<id2>))))')
1 голос
/ 20 января 2010

это происходит автоматически, вам ничего не нужно делать в конфигурации маршрутизации, просто сделайте это

class Controller_News extends Controller {
     public function action_show($param1, $param2 = "can have default value too"){
          // can be called with 'yoursite.com/news/show/param1/param2'
     }
}
0 голосов
/ 22 декабря 2009

Или, может быть, если вы хотите, чтобы дополнительные параметры были $ _GETable переменными, тогда:

$config['article/([0-9]+)'] = 'news/show/$1?param1=some_stuff&param2=another_stuff';
0 голосов
/ 12 января 2010

Маршруты переписывают URL-адреса, так что вы можете включить любые данные, которые вы хотите в новый URL-адрес, но не так, как вы предлагаете. Ключ в том, чтобы понять, что вы можете ввести только URL.

Это один из способов сделать это:

$config['article/([0-9]+)'] = 'news/show/$1/some_stuff';

Затем вы можете перехватить аргументы в методе show контроллера новостей.

См. Также документацию Kohana по Контроллер с аргументами .

Если вам нужно что-то более изощренное, вы можете создать более сложные URL или serialize и urlencode данные в URL.

0 голосов
/ 21 декабря 2009

Я думаю, вы можете пройти этот путь на любой уровень, который вам нравится:

$config['article/([0-9]+)'] = 'news/show/more/more/more/etc/$1';
...