![](/img/trans.png)
[英]how to create an optional route parameter for zend framework 2 restful route
[英]Add a optional parameter in default Zend route
我想在我的應用程序上更改默認路由,以通過Bootstrap.php使用可選參數,而不是在application.ini中。 我無法設置所有“逃生”路線,我甚至不知道如果我需要設置幾條路線,或者我只能做一條路線!
路線必須是這樣的
":module/:area/:controller/:action"
其中:area是可選的,默認為“public”
因此,在訪問http://www.example.com/my_module/my_controller/my_action時,我可以通過FC插件獲取以下內容:
$request->getParam('area') = "public"
在http://www.example.com/my_module/my_area/my_controller/my_action中,我得到:
$request->getParam('area') = "my_area"
主要的麻煩是創建所有路由,以便它們轉移到默認模塊, 索引控制器和索引操作,以防它們也沒有通過,並加載http://www.example.com/返回相同的http://www.example.com / default / public / index / index 。
我想使用URL Helper生成內部URL,並且它尊重這個新的默認路由上的正確程序集。
編輯:我認為默認路由為模塊提供了故障保護,如果它不存在則默認為控制器,但是如何在URL中創建它時模擬URL和模塊本身的其他部分的類似行為引導。
任何人都可以給我一些啟示或建議我在哪里可以找到一個有效的例子?
您可以擴展Zend_Controller_Router_Rewrite
並更改默認路由器設置和URL組裝,然后在Zend_Controller_Front上使用->setRouter()
來使用新的路由器實例而不是默認路由器實例。 搜索class Zend_Controller_Router_Rewrite
並在此之前學習它。
解決方案確實是擴展Zend_Controller_Router_Route_Abstract
並創建一個新的Route處理程序來遍歷url,驗證是否存在模塊,區域,控制器和操作以構建完整的功能URL或調度到錯誤控制器。
在match()
和assemble()
方法之間完成繁重的工作,我用作Zend類Zend_Controller_Router_Route_Module
作為參考,為模塊執行類似的任務,但不是驗證模塊是否與調度程序一起存在,而是創建了允許區域的白名單,如果它不匹配,則認為該路徑部分是控制器,下一個動作和其他部分是參數。
它像魔術一樣工作!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.