通过Kohana中的路由配置传递额外参数

时间:2009-12-21 08:04:08

标签: routing kohana

是否存在将额外参数传递给Kohana中的Controller操作的机制?

例如:

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

Kohana路由文档似乎没有讨论这个问题。但是,有没有办法让这个工作。

5 个答案:

答案 0 :(得分:1)

它会自动发生,你不需要在路由配置中做任何事情,只需这样做

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'
     }
}

答案 1 :(得分:1)

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>))))')

答案 2 :(得分:0)

我认为你可以通过这种方式达到你喜欢的水平:

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

答案 3 :(得分:0)

或者如果你想要额外的参数是$ _GETable变量,那么:

$config['article/([0-9]+)'] = 'news/show/$1?param1=some_stuff&param2=another_stuff';

答案 4 :(得分:0)

路由重写网址,因此您可以在新网址中包含所需的任何数据,但不能按照您的建议方式。关键是要了解您只能输入网址。

这是一种方法:

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

然后你可以在新闻控制器的show方法中捕获参数。

另见Controller with arguments上的Kohana文件。

如果您需要更精彩的内容,可以在网址中创建更复杂的网址或serializeurlencode数据。