我正在使用symfony,我想获取特定route的url,我的route是这样的
route
project_sign_in: pattern: /signin defaults: { _controller: ProjectContactBundle:User:signIn }
我想要到generate这网址从这路由所以我能得到localhost/app_dev.php/signin或{SERVER-ADDRESS}/app_dev/signin如果我在浏览服务器。
localhost/app_dev.php/signin
{SERVER-ADDRESS}/app_dev/signin
nfg76nw01#
使用4.0版的路由组件:
<?php use Symfony\Component\Routing\Generator\UrlGenerator; UrlGenerator->generate('project_sign_in', [], UrlGenerator::ABSOLUTE_URL);
sigwle7e2#
最后一个临时参数必须为true才能生成绝对url:
$router->generate('project_sign_in', array(), true);
小枝:
{{ path('project_sign_in', {}, true) }} {# or #} {{ url('project_sign_in') }}
在控制器中:
$this->generateUrl('project_sign_in', array(), true );
编辑:对于symfony 4,请参见@Michael B.答案UrlGenerator->generate('project_sign_in', [], UrlGenerator::ABSOLUTE_URL);
UrlGenerator->generate('project_sign_in', [], UrlGenerator::ABSOLUTE_URL);
iszxjhcz3#
在Symfony 5.0中,如果您在服务中使用路由:
namespace App\Service; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; . . . private $router; public function __construct(UrlGeneratorInterface $router) { $this->router = $router; } public function foo() { $this->router->generate('bar', [], urlGeneratorInterface::ABSOLUTE_URL); }
myss37ts4#
至少在Symfony 6中,控制器有一个内置的方法可以实现这一点:
$signUpPage = $this->generateUrl('sign_up');
请参见https://symfony.com/doc/current/routing.html#generating-urls-in-controllers
4条答案
按热度按时间nfg76nw01#
使用4.0版的路由组件:
sigwle7e2#
最后一个临时参数必须为true才能生成绝对url:
小枝:
在控制器中:
编辑:对于symfony 4,请参见@Michael B.答案
UrlGenerator->generate('project_sign_in', [], UrlGenerator::ABSOLUTE_URL);
iszxjhcz3#
在Symfony 5.0中,如果您在服务中使用路由:
myss37ts4#
至少在Symfony 6中,控制器有一个内置的方法可以实现这一点:
请参见https://symfony.com/doc/current/routing.html#generating-urls-in-controllers