2012-12-28 186 views
1

因此,我一直在嘗試在網上找到關於它的東西,但沒有在文檔中的任何地方提供關於URL中的尾部斜槓的信息。這是我的問題。URL中的尾部斜線

我希望所有URL都以斜線結尾,如果不是,可能會重定向它們。現在,我的代碼工作有和沒有一個斜槓,但我得到兩個不同的結果時,我var_dump($this->dispatcher->getParams());

這裏是我的路線

<?php 
    // for brevities sake, it's only the route 

    $router->add('/:controller/:action/:id/', array(
     'controller' => 1, 
     'action'  => 2, 
     'id'   => 3 
    )); 

代碼現在,斜線,我有沒有真正做到任何東西,所以我只是離開了它。對於URL /用戶/視圖/ 13/,這裏是爲$this->dispatcher->getParams()後續代碼var_dump:

array(2) { 
    [0]=> 
    string(2) "13" 
    [1]=> 
    string(0) "" 
} 

如果我運行URL /用戶/視圖/ 13(沒有尾隨斜線),這裏的的var_dump$this->dispatcher->getParams()

array(2) { 
    [0]=> 
    string(2) "13" 
} 

從本質上講,是有辦法,我可以讓多爾康結束在結尾的斜線,讓我得到了相同的結果?或者我可能需要編寫一個自定義路由類?任何幫助,將不勝感激!

回答

3

對於<版本= 0.7.0,你可以在每個路由添加一個可選的/正則表達式:

$router->add('/:controller/:action/:id[/]{0,1}', array(
    'controller' => 1, 
    'action'  => 2, 
    'id'   => 3 
)); 

注:ID是不是在MVC \路由器有效的佔位符代替它,你可以使用:整數

從0.8.0開始,您可以啓用尾隨斜槓的自動校正:

$router->removeExtraSlashes(true); 
+0

這正是我一直在尋找。謝謝! –