gpt4 book ai didi

routes - 将路由与 Symfony 中的当前请求进行比较

转载 作者:行者123 更新时间:2023-12-02 13:43:41 27 4
gpt4 key购买 nike

对于我的网站导航,我想指示当前页面。如果导航中的每个页面都有自己的路线,是否有办法查看当前请求是否与该路线匹配?像这样的东西:

$request->getRoute() == '@my_route'

或者,更一般地说,在 Symfony 中创建站点导航时是否有设置事件页面的惯用方法?

最佳答案

Or, more generally, is there an idiomatic way of setting the active page when creating site navigation in Symfony?

不要为此使用 sfContext::getInstance()、路由名称或内部 uri。使用 Symfony 有多种方法可以实现导航菜单突出显示,我个人喜欢设置请求属性(例如在 Controller 中),如下所示:

<?php
// ...
public function executeFoo(sfWebRequest $request)
{
$request->setAttribute('section', 'blah');
}

然后在您的模板中:

<ul>
<li class="<?php echo 'blah' === $sf_request->getAttribute('section') ? 'active' : '' ?>">
<a href="<php echo url_for('@my_route') ?>">Blah</a>
</li>
</ul>

您甚至可以在 routing.yml 文件中的路由中添加 section 参数:

my_route:
url: /foo
param: { module: foo, action: bar, section: blah }

然后在您的模板中,如果您这样做,请小心检查请求参数而不是属性:

<ul>
<li class="<?php echo 'blah' === $sf_request->getParameter('section') ? 'active' : '' ?>">
<a href="<php echo url_for('@my_route') ?>">Blah</a>
</li>
</ul>

简单而高效,对吧?但如果您需要更复杂的导航(尤其是嵌套菜单),您应该考虑使用一些功能更齐全的插件或基于 symfony 的 CMS,例如 Sympal、Diem 或 ApostropeCMS。

关于routes - 将路由与 Symfony 中的当前请求进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2739923/

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