0

「Movies」というコントローラーがあるため、リンクは「localhost/Movies」であり、このコントローラーには「localhost/Movies/view/[id]」、「localhost/Movies/view/category/[id]」などのアクションがあります「localhost/Movies/English/new」のようにカテゴリ名とサブカテゴリ名でパスを作りたい場合。

Cakephp 2 でこのようなことを行うにはどうすればよいですか。私のプロジェクトは "localhost/English/new" のようになりましたが、映画をこのパスに配置して、より修正しやすくしたいのですが、新しいカテゴリを作成したい場合は、列を追加するだけです私のデータベースで。

ありがとう

4

2 に答える 2

0

私が理解しているなら、多分あなたの行動のためのカスタムルートを作成することによって:

app / config / routers.php:

Router :: connect('/ movies /:category /:subcategory'、array('controller' =>'movies'、'action' =>'index'));

そして、次の方法でコントローラーの値を取得できます。

echo $ this-> params ['category'];

echo $ this-> params ['subcategory'];

クックブックhttp://book.cakephp.org/1.3/view/945/Routes-Configurationでもそれについて読むことができます

于 2012-10-29T21:08:46.747 に答える
0

CakePHP のデフォルトのルーティングは次のとおりです。

mydomain/controller/action/param1/param2/param3/param4/...

アクションにフィルター オプションを追加する場合は、オプションのパラメーターをアクションに追加するだけです。

function index($category = null, $subcategory = null) {
   if(isset($subcategory)){
       //will execute if you pass both arguments
   }else if(isset($category)){
       //will execute if you pass one argument
   }else{
       //will execute if you pass no arguments
   }
}

編集

この場合、$category は param1、$subcategory は param2 です。オーバーロードされた関数は、1 つ、2 つ、または引数なしのいずれかを受け取ることができます。たとえば、これが ObjectsController にある場合、これらはすべて有効な URL です。

localhost/objects/index/              //$category==null, $subcategory==null
localhost/objects/index/foods/        //$category=='foods', $subcategory==null
localhost/objects/index/foods/green/  //$category=='foods', $subcategory=='green'

これにより、同じアクションで多くのオプションを制御できます。

于 2012-10-29T22:11:55.503 に答える