2011-01-24 55 views
0

是否有可能在CakePHP的路由器文件中執行sql查詢?查詢必須選擇關於控制器名稱的數據。在CakePHP的路由器文件中獲取控制器名稱和SQL查詢?

有可能實現?

更新:我需要的是使用不同的路線關於網址。 url和路由之間的關係將在數據庫中定義。

tnx in adv!

+1

你做錯了什麼。路線並不意味着要做這麼多工作。您需要重新考慮您的方法並將該邏輯移入控制器。 – deceze 2011-01-25 00:11:50

回答

1

在控制器中重定向是可能的,但它會產生開銷,而控制器背後的想法不是路由。否則,路由類不在那裏。

實際上它是Router類的擴展,所以帶有繼承路由器類的connect函數的新類是最好的解決方案。

可以通過查找數據庫中的URL來完成路由。只需製作一個包含網址,控制器,操作和參數的表格即可。查找當前的URL(Router :: normalize($ dispatcher-> getUrl());),然後連接Router :: connect(「數據庫結果」)

Regards, Wouter de Boer。

2

是的,您可以從路由器文件訪問數據庫,並根據需要動態設置路由器。 要做到這一點,你必須編寫代碼在路由器文件:

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

相關問題