[英]How do I write Routing Chains for a Subdomain in Zend Framework in a routing INI file?
我正在嘗試使用Zend路由器創建子域,然后為子域下的每個部分創建子域,例如subdomain.site.com/section/我正在創建另一個路由,然后嘗試將其鏈接到子域路由。 但我不知道怎么做。 我已經閱讀了所有可以找到的文檔和所有論壇,但它讓我自己弄清楚了。 到目前為止,我的嘗試只是給我這個錯誤:
可捕獲的致命錯誤:傳遞給Zend_Controller_Router_Rewrite :: addRoute()的參數2必須實現接口Zend_Controller_Router_Route_Interface,null給定,在第155行的/var/local/zend/library/Zend/Controller/Router/Rewrite.php中調用,並在/ var中定義第93行/local/zend/library/Zend/Controller/Router/Rewrite.php
使用以下代碼:
routes.b2b.type = "Zend_Controller_Router_Route_Hostname"
routes.b2b.route = "sales.sitename.com"
routes.b2b.defaults.module = b2b
routes.b2b.defaults.controller = index
routes.b2b.defaults.action = index
routes.b2b_signup.type = "Zend_Controller_Router_Route_Static"
routes.b2b_signup.route = "/signup"
routes.b2b_signup.defaults.controller = "index"
routes.b2b_signup.defaults.action = "signup"
routes.b2b_login.type = "Zend_Controller_Router_Route_Chain"
routes.b2b_login.chain = b2b_signup
我找不到一個如何用網上任何地方的INI文件鏈接這個的例子。 整個應用程序用INI編寫,用於路由配置,因此我無法將其切換到基於數組的配置(或XML),其中100%的互聯網示例都在其中。
如果我能以陣列形式完成,我可以這樣說:
$hostnameRoute = new Zend_Controller_Router_Route_Hostname(
'sales.sitename.com',
array(
'controller' => 'index',
'module' => 'b2b',
'action' => 'index'
)
);
$hostnameRoute = new Zend_Controller_Router_Route_Static(
'/signup',
array(
'controller' => 'index',
'module' => 'b2b',
'action' => 'signup'
)
);
$chainedRoute = new Zend_Controller_Router_Route_Chain();
$chainedRoute->chain($b2b_signup)
有沒有人對如何在INI文件中執行上述操作有任何想法?
這基本上是你想要的INI格式:
routes.b2b.type = "Zend_Controller_Router_Route_Hostname"
routes.b2b.route = "sales.sitename.com"
; you could specify a default module (or anything) to use for the whole
; route chain here, like so:
; routes.b2b.defaults.module = "default"
routes.b2b.chains.signup.type = "Zend_Controller_Router_Route_Static"
routes.b2b.chains.signup.route = "/signup"
routes.b2b.chains.signup.defaults.controller = "index"
routes.b2b.chains.signup.defaults.action = "signup"
routes.b2b.chains.anotherroute.route = "/something/:foo" ; etc, etc.
routes.b2b.chains.anotherroute.defaults.action = "foo"
routes.b2b.chains.anotherroute.defaults.controller = "index"
routes.b2b.chains.anotherroute.defaults.foo = "bar"
routes.b2b.chains.anotherroute.reqs.foo = '[a-z]+'
這將為您提供以下路線: b2b-signup
和b2b-anotherroute
。
這里有一些關於路由鏈的重要說明:
將路由鏈接在一起時,外部路由的參數優先級高於內部路由的參數。 因此,如果在外部路徑和內部路徑中定義控制器,則將選擇外部路徑的控制器。
父/子鏈接的路由名稱始終與短划線連接! 因此,與上面的示例一樣, b2b.chains.signup
成為名為b2b-signup
的路由(可用於URL組裝等)。
你可以繼續鏈接! 鏈條鏈可以有鏈子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.