2009-12-21 97 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>))))')