2011-01-24 10 views
0

CakePHPのルータファイルでsqlクエリを実行することは可能ですか?コントローラ名に関するデータを選択する必要があります。CakePHPのルータファイルでコントローラ名とSQLクエリを取得しますか?

これは可能ですか?

更新:私が必要とするのは、URLに関する別のルートを使用することです。 urlとrouteの関係はデータベースに定義されます。

advでのtnx!

+1

を私に連絡。ルートはこれほど多くの作業を行うことを意図したものではありません。あなたはアプローチを再考し、そのロジックをコントローラに移す必要があります。 – deceze

+0

[CakePHPの可能な複製 - bootstrap.php経由のデータベースへのアクセス](http://stackoverflow.com/questions/4788444/cakephp-access-to-database-via-bootstrap-php) – deceze

+0

です。管理者はこのメッセージを削除できます。 – user198003

答えて

1

コントローラーでのリダイレクトは可能ですが、オーバーヘッドが発生し、コントローラーの背後にあるアイデアはルーティングされません。それ以外の場合、ルーティングクラスは存在しませんでした。

これは実際にはRouterクラスの拡張であるため、ルータクラスを継承する新しいクラスが接続関数を使用するのが最適です。

ルーティングを行うには、データベースのURLを参照することができます。ちょうどurl、コントローラ、アクション、paramでテーブルを作ってください。現在のURL(Router :: normalize($ dispatcher-> getUrl());)を参照してからRouter :: connect( "データベースからの結果")に接続してください。

よろしくご協力ください、 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

関連する問題