是否有可能在CakePHP的路由器文件中執行sql查詢?查詢必須選擇關於控制器名稱的數據。在CakePHP的路由器文件中獲取控制器名稱和SQL查詢?
有可能實現?
更新:我需要的是使用不同的路線關於網址。 url和路由之間的關係將在數據庫中定義。
tnx in adv!
是否有可能在CakePHP的路由器文件中執行sql查詢?查詢必須選擇關於控制器名稱的數據。在CakePHP的路由器文件中獲取控制器名稱和SQL查詢?
有可能實現?
更新:我需要的是使用不同的路線關於網址。 url和路由之間的關係將在數據庫中定義。
tnx in adv!
在控制器中重定向是可能的,但它會產生開銷,而控制器背後的想法不是路由。否則,路由類不在那裏。
實際上它是Router類的擴展,所以帶有繼承路由器類的connect函數的新類是最好的解決方案。
可以通過查找數據庫中的URL來完成路由。只需製作一個包含網址,控制器,操作和參數的表格即可。查找當前的URL(Router :: normalize($ dispatcher-> getUrl());),然後連接Router :: connect(「數據庫結果」)
Regards, Wouter de Boer。
是的,您可以從路由器文件訪問數據庫,並根據需要動態設置路由器。 要做到這一點,你必須編寫代碼在路由器文件:
App::import('Model', 'ModelName');
$ModelName = new ModelName();
這裏MODELNAME是要拉數據模型的名稱。 所以現在你有模型的對象,現在你可以通過調用模型函數並定義路由器來獲取數據。對於我的情況,我使用此代碼
$data = $ModelName ->find('all');
if(!empty ($data)){
//pr($events);
foreach ($data as $item) {
if($item['ModelName']['field_name']!=""){
Router::connect("/{$item['ModelName']['field_name']}", array('controller' => 'registrations', 'action' => 'index', $item['ModelName']['anyvalue']));
}
}
}
因此,您可以按照您的要求定義您的路由器。如果你還在問題,請聯繫我。
感謝 Behestee
你做錯了什麼。路線並不意味着要做這麼多工作。您需要重新考慮您的方法並將該邏輯移入控制器。 – deceze 2011-01-25 00:11:50