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'
これにより、同じアクションで多くのオプションを制御できます。