gpt4 book ai didi

symfony1 - 自定义路由类

转载 作者:行者123 更新时间:2023-12-04 20:52:54 24 4
gpt4 key购买 nike

在 symfony 1.4 中,您可以定义一个自定义路由类,您可以在其中使用自定义逻辑覆盖 url 的生成,例如:

custom:
class: sfDoctrineRouteCollection
options:
model: Custom
prefix_path: /custom/category/:category_id
column: id
route_class: CustomDoctrineRoute

class CustomDoctrineRoute extends sfDoctrineRoute
{
public function generate($params, $context = array(), $absolute = false)
{
if (!isset($params['category_id'])) {
$params['category_id'] = sfContext::getInstance()->getRequest()->getParameter('category_id');
}

return parent::generate($params, $context, $absolute);
}

}

这允许写 url_for('custom_show', array('id'=> $object['id']))并且不关心上下文相关参数(category_id)。

你如何处理这是symfony2?

最佳答案

我可以想到两种方法。第一个,也是最简单的,是用你自己的类扩展 Router 类,并告诉 symfony 在你的 parameters.yml 或 config.yml 中使用你的类:

parameters:
router.class: Company\CoreBundle\Routing\MyCustomRouter

有一个更强大(阅读:复杂)的解决方案,它允许您通过覆盖或扩展整个路由器来定义对路由器类的更多依赖 服务 .有一个叫做 BeSimpleI18nRoutingBundle 的包可以做到这一点。你可以看看它是如何完成的。

具体来说,请注意 CompilerPass它们替换默认值 router用自己的服务。然后你必须实现 RouterInterface在您自己的路由器类中。在这个特定的捆绑包中,他们 inject the original default router (在编译器传递中重命名后)。

关于symfony1 - 自定义路由类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8384660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com