Symfony Url生成器在登录前后从同一路由生成不同的URL

2022-08-30 17:54:42

我目前在自定义框架中使用Symfony Kernel和Trouting,我遇到了一个奇怪的问题。使用相同的路由:

$collection->add('article_edit', new Route('/articles/edit/{alias}', array(
    '_controller' => 'AppBundle:Article:edit'
)));

使用此 URL 生成器代码

$url = $this->generateUrl('article_edit',array('alias' => 'test'));

在登录之前,Url生成器会生成

/文章/编辑/测试

登录后,它会产生

http://localhost/testsite/articles/edit/test

在没有任何改变的情况下,这里可能发生的事情,因为我希望始终如一地获得相同的结果。

谢谢


答案 1

我可以看到“/articles/edit/test”和“http://localhost/testsite/articles/edit/test”是相同的url,只是其中的网站URL不同。

如果您使用“generateUrl”方法,它将生成始终相同的URL。它应该始终生成“http://localhost/testsite/articles/edit/test

$url = $this->generateUrl('article_edit',array('alias' => 'test', UrlGeneratorInterface::ABSOLUTE_URL));

另外,不要忘记在命名空间部分中使用下面的类

use Symfony\Component\Routing\Generator\UrlGeneratorInterface;

答案 2

尝试将主机设置在app/config/services.yml

parameters:
    router.request_context.host: www.yourdomain.com
    router.request_context.scheme: http
    router.request_context.base_url: /your/path

更多信息: https://symfony.com/doc/3.3/console/request_context.html


推荐