我试图创建使用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组件,等等)。

您可以保留链接!链的链可以具有侧链。

链路线的孩子不使用通配符工作。请参见#ZF-6654 。这里是博客帖子那为什么这可能不是一个大问题举行了会谈。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top