【问题标题】:key value routing in Zend Framework RouteZend Framework Route 中的键值路由
【发布时间】:2010-01-18 15:41:22
【问题描述】:

我正在使用主机名路由来捕获子域并用作类别。然后,我为控制器、操作和键/值对链接路由器路由。

$hostnameRoute = new Zend_Controller_Router_Route_Hostname(
 ':customer.ddc.:domain',
 array(
  'customer' => ':customer'
 )
);

$routerRoute = new Zend_Controller_Router_Route(
 ':controller/:action/*',
 array(
  'controller' => 'index',
  'action' => 'index'
)
);
$chainedRoute = $hostnameRoute->chain($routerRoute);
$frontController->getRouter()->addRoute('default',$chainedRoute);

我可以捕获除 URI 上的键/值对之外的所有内容。添加它们会导致请求中的 Params 对象不会被填充。

这可行:http://category.mydomain.com/controller/action/

这不是:http://category.mydomain.com/controller/action/username/frank

感谢您的任何建议。

【问题讨论】:

    标签: php zend-framework router routes hostname


    【解决方案1】:

    尝试不使用/*

    $routerRoute = new Zend_Controller_Router_Route(
        ':controller/:action',
        array(
            'controller' => 'index',
            'action'     => 'index'
        )
    );
    

    12.5.2. Using a Router 中所述。

    【讨论】:

    • 感谢您的回复。删除 * 没有帮助。 12.5.7. Route Types 讨论了添加 * 以匹配 URI 中的尾随键/值对。但是,它似乎只捕获一个键。任何添加更多的尝试,请求对象中的参数都不会被填充。
    • 这是一个奇怪的出价。现在http://category.mydomain.com/controller/action/username/frank 正在将您重定向到controlleraction 等?
    • 它不会重定向到任何地方。路线的映射完全消失了。我想我已经把它作为 ZF 中的一个错误找到了:framework.zend.com/issues/browse/ZF-6654
    【解决方案2】:

    建议的补丁对我不起作用。我修改了 ZF 网站上其他地方的另一个补丁,它似乎运行良好:http://pastie.org/1815135

    【讨论】:

      【解决方案3】:

      在链接路由时确实存在阻止通配符匹配的错误。错误描述中的 cmets 对解决这个问题非常有帮助,只需更改几行代码。

      framework.zend.com/issues/browse/ZF-6654

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-09
        • 2011-04-01
        • 2014-05-02
        • 2015-04-23
        相关资源
        最近更新 更多