2

私はcakephpプロジェクトに取り組んでいます。.htaccess ファイルを使用して URL から index.php を削除しましたが、URL からビュー名を削除し、他の 2 つの異なるパラメーターを追加したいと考えています。国と都市を選択すると、これら 2 つのパラメータを選択すると URL に表示されるはずです。

私が直面している問題は、cakephpが取るようです

www.example.com/Controllername/viewname

しかし、私の要件はこのようなものです

www.example.com/Controllername/param1/param2

この方法で渡すと、param1 がコントローラーとして、param2 がビューとして検索されます。

最初は次のようになります。

www.example.com/Controllername/
4

2 に答える 2

2

あなたのAPP/routes.php

// www.example/com/Controllername
Router::connect('/Controllername', 
    array('controller'=>'Controllername', 'action'=>'index'));

// www.example.com/Controllername/param1/param2
Router::connect('/Controllername/:param1/:param2',
    array('controller'=>'Controllername', 'action'=>'index'), 
    array('pass' => array('param1', 'param2')));

そしてあなたのコントローラー:

// set to null/a value to prevent missing parameter errors
public function index($param1=null, $param2=null) {
   //echo $param1 . ' and ' . $param2;
}

リンクを生成する場合:

array('controller'=>'Controllername', 'action'=>'index', 'param1'=>'foo', 'param2'=>'bar');

順序が重要です。必要なものに変更paramXします。つまりcountrytown

これはカバーしないことに注意してください: controllername/param1- この例では両方が存在する必要があります。

これを実現する方法は他にもあります。

于 2012-12-28T12:46:42.760 に答える
0

まず、 mod-rewriteモジュールが有効になっていることを確認する必要があると思います。mod_rewrite が有効になっている場合、.htaccess を使用して URL から index.php を削除する必要はありませんでした。Web サーバーのマニュアルで有効にする方法を確認してください。cakephp のデフォルトの .htaccess が残りのルーティングを処理できるはずです。

書き換えモジュールを有効にした後、 APP/routes.phpの前の回答で @Ross が指摘したように、ルートを変更できます。

// www.example/com/Controllername
Router::connect('/Controllername', 
array('controller'=>'Controllername', 'action'=>'index'));

// www.example.com/Controllername/param1/param2
Router::connect('/Controllername/:param1/:param2',
array('controller'=>'Controllername', 'action'=>'index'), 
array('pass' => array('param1', 'param2')));
于 2014-09-28T18:57:09.380 に答える