Php 如何在路由INI文件中为Zend Framework中的子域编写路由链?
我尝试使用Zend路由器创建子域,然后针对子域下的每个部分,例如subdomain.site.com/section/创建另一个路由,然后尝试将其链接到子域路由。但我不知道怎么做。我已经阅读了所有我能找到的文档和所有的论坛,但这让我自己想出来。到目前为止,我的尝试只是得到了以下错误: 可捕获致命错误:参数2传递给 Zend_控制器_路由器_重写::addRoute()必须实现接口 Zend_控制器_路由器_路由_接口,给定为空,在中调用 /第155行的var/local/zend/library/zend/Controller/Router/Rewrite.php 定义于 /第93行的var/local/zend/library/zend/Controller/Router/Rewrite.php 使用以下代码:Php 如何在路由INI文件中为Zend Framework中的子域编写路由链?,php,zend-framework,routing,subdomain,ini,Php,Zend Framework,Routing,Subdomain,Ini,我尝试使用Zend路由器创建子域,然后针对子域下的每个部分,例如subdomain.site.com/section/创建另一个路由,然后尝试将其链接到子域路由。但我不知道怎么做。我已经阅读了所有我能找到的文档和所有的论坛,但这让我自己想出来。到目前为止,我的尝试只是得到了以下错误: 可捕获致命错误:参数2传递给 Zend_控制器_路由器_重写::addRoute()必须实现接口 Zend_控制器_路由器_路由_接口,给定为空,在中调用 /第155行的var/local/zend/library
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),在这种配置中,internet上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注册
,以及b2b其他路线
以下是有关路线链接的一些重要注意事项:
将路由链接在一起时,外部路由的参数的优先级高于内部路由的参数。因此,如果在外部管线和内部管线中定义控制器,将选择外部管线的控制器
父/子链接路由名称始终用破折号连接!因此,就像上面的例子一样,b2b.chains.signup
成为一个名为b2b signup
的路由(可以用于URL组装等)
你可以继续锁链!链条的链条可以有链条
链接路由的子级不能使用通配符。看见这就是为什么这可能不是什么大问题。这正是我想要的答案。自从我几个月前开始与ZF合作以来,你真的帮了我大忙,而在互联网上我几乎找不到(我猜直到这篇文章之前)描述如何在INI中实现这一点的内容。非常感谢你!你能为ZF推荐一些好书吗?不,很遗憾。我从未读过任何关于Zend框架的书(或书?)。也就是说,Rob Allen的Zend框架应该是好的。然而,由于采埃孚的快速发展,书籍很快就过时了;非常快。例如,该书中没有任何关于路由链、Zend_应用程序或Zend_工具的内容。“你可以继续链接!链链可以有链。”我想知道哪一种是正确的方法:1。路线。b2b。连锁。另一条路线。连锁。yetanotherroute。。。2.路线。另一条路线。锁链。yetanotherroute…我相信你的第一个例子是正确的,Kenji。