我目前正在將一個網站從WordPress移植到CakePHP,並且我在使用WP版本時遇到了其中一個路由問題。使用GET參數的CakePHP路由
我必須路由http://example.com/?specific_key=value
到http://example.com/controller/action
,但我找不到一個方法來捕獲與默認主頁路由捕獲它的網址。
任何意見或指針非常感謝。
謝謝!
我目前正在將一個網站從WordPress移植到CakePHP,並且我在使用WP版本時遇到了其中一個路由問題。使用GET參數的CakePHP路由
我必須路由http://example.com/?specific_key=value
到http://example.com/controller/action
,但我找不到一個方法來捕獲與默認主頁路由捕獲它的網址。
任何意見或指針非常感謝。
謝謝!
嘗試將以下內容添加到路線文件的頂部。檢查參數是否設置了值並將'/'連接到需要路由到的位置。這樣它將在頁面控制器路由之前匹配你的路線。
if (isset($_GET['specific_key']) && $_GET['specific_key'] === 'value') {
Router::connect('/', array(whatever controller/action you need));
}
// the rest of your routes
你也可以在你的htaccess文件創建一個重寫規則吧:
RewriteCond %{QUERY_STRING} ^specific_key=value$ [NC]
RewriteRule//controller/action? [R=301,L]
第三個選擇:使用自定義路由類:https://gist.github.com/3763800
創建文件APP/Lib/Route/QueryStringRoute.php
,把內容上面的鏈接。
然後做:
App::uses('QueryStringRoute', 'Route');
Router::connect('/', array('controller' => 'your_controller'), array(
'routeClass' => 'QueryStringRoute',
'query' => array('specific_key' => 'value')
));
再次,這將需要你的家的路線了。
編輯:增加了第三個選項。
根據GET參數設置路由是不可能的。
編輯:至少使用內置的CakeRoute類。
我看到...所以我的解決方法是從應用程序控制器調用操作方法(因爲我將'/'路由到'/ app/index'),但我無法通過調用它來訪問Controller,我如何訪問它?這是一個很好的選擇嗎? –
AppController本質上是一個抽象類。你不能直接引用它。試試下面的@tigrang建議。 – ADmad
條件完美的工作,非常感謝!我希望我有足夠的聲望投票給你,如果有人看到這個,請給@tigrang一些投票!再次感謝! :d –