php 我怎样才能用symfony得到路由的绝对地址

cvxl0en2  于 2023-03-16  发布在  PHP
关注(0)|答案(4)|浏览(181)

我正在使用symfony,我想获取特定route的url,我的route是这样的

project_sign_in:
    pattern:  /signin
    defaults: { _controller: ProjectContactBundle:User:signIn }

我想要到generate这网址从这路由所以我能得到
localhost/app_dev.php/signin{SERVER-ADDRESS}/app_dev/signin
如果我在浏览服务器。

nfg76nw0

nfg76nw01#

使用4.0版的路由组件:

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

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

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

iszxjhcz

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);
}
myss37ts

myss37ts4#

至少在Symfony 6中,控制器有一个内置的方法可以实现这一点:

$signUpPage = $this->generateUrl('sign_up');

请参见https://symfony.com/doc/current/routing.html#generating-urls-in-controllers

相关问题