是否存在将额外参数传递给Kohana中的Controller操作的机制?
例如:
$config['article/([0-9]+)'] = array('path' => 'news/show/$1',
'params' => array(
'param1' => 'some_stuff',
));
Kohana路由文档似乎没有讨论这个问题。但是,有没有办法让这个工作。
答案 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¶m2=another_stuff';
答案 4 :(得分:0)
路由重写网址,因此您可以在新网址中包含所需的任何数据,但不能按照您的建议方式。关键是要了解您只能输入网址。
这是一种方法:
$config['article/([0-9]+)'] = 'news/show/$1/some_stuff';
然后你可以在新闻控制器的show
方法中捕获参数。
另见Controller with arguments上的Kohana文件。
如果您需要更精彩的内容,可以在网址中创建更复杂的网址或serialize
和urlencode
数据。