2012-10-13 21 views
2

我有一個新的問題與this question有關,但由於問題根本不匹配,所以我創建了這個新主題。但這是很好的參考。Cakephp控制器別名不能完全工作


我改變了主意有關logslog事情,logs是罰款。但我有另一個控制器叫WikisController,在這種情況下,我真的想更改URL。我只是恨它的網址將是example.com/wikis/subject.html,我希望它是example.com/wiki/subject.html。它更清潔,現在該公約與其他網站100%匹配,它也被稱爲wiki,而不是wikis。但是,由於CakePHP慣例,我希望控制器被稱爲WikisController

那麼,現在出現了真正的問題。目前我用在Config/routes.php以下路由:

Router::connect('/wiki/:action/*', array('controller' => 'wikis')); 
Router::connect('/wiki/*', array('controller' => 'wikis')); 

這是通過在other topic的溶液中使用的一段代碼。但是現在我遇到了一些麻煩。那麼,這不是一個大問題,因爲一切正常。但我不喜歡這個網址。

當我創建一個鏈接從example.com/wiki/edit.html如下:

echo $this->Html->link('Wiki overview', array(
    'controller' => 'wikis', 
    'action' => 'index', 
    'ext' => 'html' 
)); 

它創建一個鏈接到example.com/wiki/index.html完全罰款和它的作品,但我不希望顯示index.html,我只是不」噸。這是一個額外的網址,用戶不需要了解他在哪裏。

我正在創建linkcontrolleraction的關鍵,因爲我之前有一個小錯誤。當我沒有指定action時,它會創建一個到我不想要的example.com/edit.html的鏈接,顯然。所以我必須將action => index鍵添加到陣列中。我不確定這是否是一個真正的錯誤,但它應該沒有關係。 Index = index,沒有什麼改變。這是一件好事,我確信我的網址指向了正確的頁面,所以添加action對我來說不是問題。

只是爲了好通知:

當我創建的和我一模一樣的上面example.com/flights/index.htmlexample.com/flights/add.html頁面以同樣的方式鏈接它會刪除/index部分從URL和簡單的創建一個URL到example.com/flights.html這更清潔。

所以它必須做一些與路由,但我不知道什麼。

回答

1

如果我理解正確的話,那麼你就需要連接/wiki到控制器index行動路線:

Router::connect('/wiki', array('controller' => 'wikis', 'action' => 'index')); 
Router::connect('/wiki/:action/*', array('controller' => 'wikis')); 
... 
+0

該解決方案似乎工作得很好。儘管如此,我必須對它進行更多的測試。如果是這個問題,我會把這個帖子標記爲答案。謝謝:)我刪除了我的當前路由的第二行,並沒有給出任何警告或錯誤。所以把第二行改成你的第一行並改變順序就是了。 – Jelmer

+0

好吧,我測試了一下,它似乎工作正常。如果我遇到任何問題,畢竟我會讓你們知道。我會在前面的問題中發佈一個關於這個問題的鏈接。 – Jelmer