gpt4 book ai didi

php - 使用 yaml 路由描述时如何在运行时获取 Symfony2 中的路由名称?

转载 作者:可可西里 更新时间:2023-11-01 12:23:57 25 4
gpt4 key购买 nike

在这里你可以找到我关于 Symfony2 的第 n 个问题。

我正在使用 pagination bundle它使用 routing.yml 文件中提供的路由名称。从我的角度来看,这种方法不灵活并且会导致脏代码,因为如果我更改路由名称,那么我必须查看所有 Twig 模板或 PHP 文件以更新路由名称。这对于小型 Web 应用程序来说是可以的,但是对于较大的应用程序来说就会产生这样的错误,并且对开发人员来说也需要很大的负担。

所以,我想将字符串变量 x 传递给上述包提供的 Pager 对象。字符串 x 应在 Controller 内初始化,并且必须提供所需的路由名称,如 routing.yml 文件中所给。

我举个例子。路由文件如下:

//routing.yml
AcmeTestBundle_listall:
pattern: /test/page/{page}
defaults: { _controller: AcmeTestBundle:List:listall, page: 1 }
requirements:
page: \d+

那么相关的controller是:

//use something....
class ListController extends Controller
{

public function exampleAction($page)
{
$array = range(1, 100);
$adapter = new ArrayAdapter($array);
$pager = new Pager($adapter, array('page' => $page, 'limit' => 25));

return array('pager' => $pager);
}
}

然后,在 twig 模板中,$pager 接收到引用上述包的路由名称

{% if pager.isPaginable %}
{{ paginate(pager, 'AcmeTestBundle_listall') }}
{% endif %}
{% for item in pager.getResults %}
<p>{{ item }}</p>
{% endfor %}

知道如何在运行时在 Controller 内部获取“AcmeTestBundle_listall”字符串值吗?

最佳答案

您可以使用 twig 中可用的 app 全局变量从请求中获取当前路由。

{% if pager.isPaginable %}
{{ paginate(pager, app.request.get('_route') }}
{% endif %}

关于应用的更多信息herehere .

关于php - 使用 yaml 路由描述时如何在运行时获取 Symfony2 中的路由名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10349188/

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