2012-12-28 34 views
6

我正在cakephp項目上工作。我使用.htaccess文件從URL中刪除了index.php,現在我想從URL &中刪除視圖名稱,添加一些其他兩個不同的參數。假設我選擇國家&這兩個參數應該出現在選擇它們的URL中。如何從cakephp中的url中刪除動作名稱?

我面臨的問題是因爲CakePHP的需要

www.example.com/Controllername/viewname 

但我的要求是這樣的

www.example.com/Controllername/param1/param2 

如果我通過這種方式查找參數1作爲控制器和參數2的視圖。

最初應該是這樣的:

www.example.com/Controllername/ 

回答

2

在你APP/routes.php

// www.example/com/Controllername 
Router::connect('/Controllername', 
    array('controller'=>'Controllername', 'action'=>'index')); 

// www.example.com/Controllername/param1/param2 
Router::connect('/Controllername/:param1/:param2', 
    array('controller'=>'Controllername', 'action'=>'index'), 
    array('pass' => array('param1', 'param2'))); 

和控制器:

// set to null/a value to prevent missing parameter errors 
public function index($param1=null, $param2=null) { 
    //echo $param1 . ' and ' . $param2; 
} 

產生當鏈接:

array('controller'=>'Controllername', 'action'=>'index', 'param1'=>'foo', 'param2'=>'bar'); 

訂單事宜。將paramX更改爲您想要的任何內容,即countrytown

注意這並不包括:controllername/param1 - 兩者都必須存在於此示例中。

還有其他方法可以實現這一點。

+0

謝謝回覆,當嘗試這樣做我得到了URL http://www.example.com/app/webroot/index.php/controllername/viewname/foo/bar 但我不想在URL中的視圖名 –

0

我想你應該首先確保模塊重寫模塊已啓用。如果啓用了mod_rewrite,則不應該使用.htaccess從url中刪除index.php。請檢查如何在您的網絡服務器的手冊中啓用它,cakephp的默認.htaccess應該能夠爲您處理其餘的路由。

後,您必須啓用重寫模塊,您可以修改爲您在前面的回答中指出@Ross路線APP/routes.php文件

// www.example/com/Controllername 
Router::connect('/Controllername', 
array('controller'=>'Controllername', 'action'=>'index')); 

// www.example.com/Controllername/param1/param2 
Router::connect('/Controllername/:param1/:param2', 
array('controller'=>'Controllername', 'action'=>'index'), 
array('pass' => array('param1', 'param2'))); 
相關問題