我怎样写在Zend框架的路由INI文件的子域路由链?
-
20-08-2019 - |
题
我试图创建使用Zend路由器一个子域,并且然后为每个部分的子域下,如subdomain.site.com/section/我建立另一条路线,并然后试图链它的子域路由。但我不知道怎么办。我已阅读所有的文档,我能找到的所有的论坛,但它使我弄明白我自己。到目前为止,我的尝试只是让我这个错误:
捕获的致命错误:传递给自变量2 :: Zend_Controller_Router_Rewrite和addRoute()必须实现接口 的Zend_Controller_Router_Route_Interface,空给出叫 /var/local/zend/library/Zend/Controller/Router/Rewrite.php上线155 在定义 /var/local/zend/library/Zend/Controller/Router/Rewrite.php上线93
用下面的代码:
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组件,等等)。
您可以保留链接!链的链可以具有侧链。