2009-12-21 99 views
0

有没有一种机制可以将额外的参数传递给Kohana中的Controller操作?在Kohana中通过路由配置传递额外的参数

如:

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

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

回答

0

我认为你可以走这条路你喜欢的任何级别:

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

或者,也许,如果你想额外的参数为$ _GETable变量,那么:

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

路线重写URL ,所以你可以在新的URL中包含你想要的任何数据,但不能按照你的建议。关键是了解你只能输入一个URL。

这是做这件事:

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

然后你可以赶上在新闻控制器的show方法的参数。

另请参阅关于Controller with arguments的Kohana文档。

如果您需要一些更有用的东西,您可以在URL中创建更复杂的URL或serializeurlencode数据。

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

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