如何在Symfony中获取路由的绝对URL

17

我正在使用Symfony,我想获取特定route的URL, 我的route如下:

project_sign_in:
    pattern:  /signin
    defaults: { _controller: ProjectContactBundle:User:signIn }
我希望能够从这个路由生成URL,以便我可以得到: localhost/app_dev.php/signin 或者 {SERVER-ADDRESS}/app_dev/signin 如果我在浏览服务器的话。

4个回答

25

使用版本为4.0的Routing组件:

<?php
use Symfony\Component\Routing\Generator\UrlGenerator;

UrlGenerator->generate('project_sign_in', [], UrlGenerator::ABSOLUTE_URL);

完美地工作了... @goto 解决方案对我没有用。 - Ahmed Ali

17
最后一个可选参数必须设置为true以生成绝对URL:
$router->generate('project_sign_in', array(), true);

在Twig中:

{{ 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);

以上代码是与Symfony框架相关的it技术内容,用于生成项目登录页面的URL地址。如果您正在使用Symfony 4,请查看@Michael B.的答案。

1
从Symfony 4开始,请参见@MiachalB的答案。 - Andreas

8
在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);
}

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接