0

私の管理モジュールでは、インデックス コントローラーに複数のフィルター オプションがあります。フィルタリングは、パラメーターに基づいて非常に簡単に実行できます。つまり、次のようになります。

http://www.site.com/admin/pages/by/date_added/order/asc  
-> This orders the pages by "date_added" ascending

http://www.site.com/admin/pages/status/published
-> This shows only the pages with status "published"

http://www.site.com/admin/pages/category/cars
-> This show only the pages under the "cars" category.

次に、アプリケーションのブートストラップで、次のようなルートを構築しました。

$route = new Zend_Controller_Router_Route_Regex("^admin/pages/status/([a-z,_]+)$", 
    array(
       "module" => "admin",
       "controller" => "pages",
       "action" => "index"
    ),
    array(
       1 => 'by',
       2 => 'order',
    )
);
$router->addRoute("admin/pages/order", $route); 

問題は、これらすべてのパラメーターを組み合わせる方法だけでなく、それらをオプションにする方法も知らないということです。たとえば、次のようなリンクは必要ありません。

http://www.site.com/admin/pages/by/date_added/order/asc/category/cars

また...

http://www.site.com/admin/pages/category/cars/status/published
4

1 に答える 1

1

これを試して:

$route = new Zend_Controller_Router_Route("admin/pages/*", 
    array(
       "module" => "admin",
       "controller" => "pages",
       "action" => "index"
    )
);
$router->addRoute("admin/pages/order", $route); 

*、変数をkey/valueペアとして一致させるためにそれを取得します。したがって、の例の URL はhttp://www.example.com/admin/pages/by/date_added/order/asc/category/cars一致する必要があり、ルート paramsbyorderありcategory、URL からの値が含まれます。(コントローラーからなどを介してアクセス$this->_getParam('order')できます。

于 2013-10-08T13:21:05.460 に答える