2013-05-08 133 views
1

在Kohana的3.2我使用的是默認路由一個簡單的控制器/操作/ ID設置:Kohana的路由:不能訪問路由參數

Route::set('default', '(<controller>(/<action>(/<id>)))') 
->defaults(array(
    'controller' => 'home', 
    'action'  => 'index', 
    'id'   => '0', 
)); 

每它很容易要連接控制器的文件和這樣的簡單路由的行爲,但路由參數(在這裏是id)在控制器中永遠不可訪問。

所以,比如我有一個路線:

/用戶/信息/ 123

而控制器處理這條路線被成功調用:

public function action_info() 
{ 
    $id = $this->request->param('id'); 
    echo "id=" . $id; //nothing 
    echo "is_null=" . is_null($this->request->param('id')); //1 
} 

但是$這個 - >請求 - > param('id')總是被設置爲null。

這似乎是我能想出的最簡單的例子,我在這裏可能會做錯什麼?

+0

爲什麼你的代碼說它應該輸入操作'index',但它正在運行'action_info'? – Tuan 2013-05-08 21:37:33

+0

這部分並不重要,它只是說默認操作(如果沒有指定)將是索引,但是當我點擊/ info/url Kohana路由到該操作。 – user1391445 2013-05-08 22:22:01

回答

1

你試過嗎?

Route::set('default', '(<controller>(/<action>(/<id>)))') 
    ->defaults(array(
    'controller' => 'home', 
    'action'  => 'index', 
    'id'   => '\d+', 
)); 
+1

我試過了,但結果相同。據我瞭解,Route :: set的第二個參數可以用來設置路由的正則表達式,但我目前沒有這樣做,我不認爲這適用於defaults數組。 – user1391445 2013-05-08 22:10:24

2

原來我的工作具有擴展的Kohana與請求 - >參數()函數做一些事情,公司沒有意識到已經在Kohana的一個功能,這打破了內置的功能。使用內置的Kohana請求功能修復了這個問題。

因此,這是一個非問題,因爲這是最終獲得請求參數的正確方法。 :)