我的路线是
admin:
path: /admin/
defaults: { _controller: CatalogWebBundle:Admin:admin }
如何在PHP模板中获取路由名称?
答案 0 :(得分:14)
获取当前网址
$request->getRequestUri();
或app.request.uri
至于路线本身,最佳做法是将其作为参数注入控制器,请参阅the doc here。您可以使用$request->attributes->get('_route')
或app.request.attributes.get('_route')
,但它不可靠,例如它won't work with forwards,因为您转发到控制器,而不是路径。它实际上只有meant for debugging purposes according to Fabien (@fabpot), the creator,所以我不会依赖它来进行未来的升级。缘故。
<强>旁注强>
请尽可能随时avoid $request->get()
,所以不要像我在类似问题的某些答案中看到的那样$request->get('_route')
如果您不需要控制器的灵活性,那么最好是 显式从适当的公共属性获取请求参数 相反(属性,查询,请求)
原因是它会查看所述公共属性(属性,查询和请求)而不仅仅是一个(属性),使其慢得多
答案 1 :(得分:5)
直接在Twig做一件好事,但你仍然可以。更好的方法是将其作为控制器的参数传递。
在Twig中获取路线参数。
{{ app.request.attributes.get('_route_params') }}
和
在Twig中获取整个包名称。
{{ app.request.attributes.get("_controller") }}
在Twig中获取路线名称。
{{ app.request.attributes.get('_route') }}
答案 2 :(得分:1)
要在Symfony2中获取路径名称,请输入以下代码段
$request = $this->container->get('request');
$routeName = $request->get('_route');
获取Symfony2中的URL,
$request = $this->container->get('request');
$routeURL = $request->getRequestUri();
答案 3 :(得分:0)
在某些情况下,添加app.request.uri
将不会返回当前页面的网址。
示例:在您的页面模板中,您通过以下方式调用控制器:
{{ render(controller('AppBundle:MyController:myBlock')) }}
在myBlockAction
中,您渲染另一个模板,例如block.html.twig
。
来自app.request.uri
的{{1}}来电显示如下:
block.html.twig
如果你想从http://www.example.com/app.php/_fragment?_path=_format%3Dhtml%26_locale%3Dfr%26_controller%3DAppBundle%253AMyController%253AmyBlock
里面获取渲染页面的绝对url,你可以从php $ _SERVER变量重组它:
block.html.twig
如果需要,您还可以添加{{ app.request.server.get('REQUEST_SCHEME') ~ '://' ~
app.request.server.get('SERVER_NAME') ~
app.request.server.get('PHP_SELF') }}
。
答案 4 :(得分:0)
在symfony5上,您可以这样做。
调用控制器块并传递当前网址:
{{ render_esi(controller('App\\Controller\\Frontend\\BlockController::social',{'pageUri': app.request.uri })) }}
和
<?php
namespace App\Controller\Frontend;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class BlockController extends AbstractController {
public function social($pageUri) {
return $this->render('block/_social.html.twig', ['pageUri' => $pageUri]);
}
}
输出树枝:'block / _social.html.twig'
<small>Current Url : {{ pageUri }}</small>