Symfony生成错误的url与double /

问题描述 投票:0回答:2

我正在研究一个symfony3项目,我遇到了一个问题,

我们正在发送基于树枝的电子邮件,其中包含一个指向我们平台的链接的按钮。

Button example

打开文档按钮链接如下:

app.example.com/books/book ID/怕个ID

这是通过树枝生成的:

url("open_book", { bookId: book_id, pageId: page_id })

并且url在控制器文件上定义,带有注释

@Route("/book/{bookId}/{pageId}", name="open_book")

因此,用户在电子邮件中获得的链接是原始的,但在书籍之前有双倍//,如下所示:

app.example.com//books/book ID/怕个ID

我正在研究最后一个twig版本,我不知道它是否也可能是symfony问题,因为它只发生在我们的prod环境中(它适用于本地,是的)

如果有帮助,我们的routing.yml

app:
    resource: "@BooksBundle/Controller/"
    type:     annotation
    prefix:   /
    host:     app.%host%

这只发生在由树枝生成的网址上。我们也使用jms翻译和jms i18n包,所以我想也许它试图在/ /之后设置一个空的语言环境:

app.example.com/恩/books/book ID/怕个ID

但是,不是恩,而是一种空洞的语言。

任何想法开始?

更新3/01/18嘿!谢谢你的所有答案。看来这是symfony配置的最终问题......

在文件parameters.yml:

router.request_context.scheme: '%env(ROUTER_REQUEST_CONTEXT_SCHEME)%'
router.request_context.host: '%env(ROUTER_REQUEST_CONTEXT_HOST)%'
router.request_context.base_url: '%env(ROUTER_REQUEST_CONTEXT_BASE_URL)%'

那么我们对base_url的值是/。似乎这是真正的问题。删除/打开该参数可以解决问题。

谢谢!!

php symfony routes twig
2个回答
3
投票

对于控制器中的每个路径,您使用前缀/

app:
    resource: "@BooksBundle/Controller/"
    type:     annotation
    prefix:   /
    host:     app.%host%

这意味着每条路线都像:

@Route("/book/{bookId}/{pageId}", name="open_book")

将以/为前缀。最后这条路线将是//book/{bookId}/{pageId}。有些库会截断路径值,而其他库则不会。

所以只需完全删除prefix参数或声明路径路径而不带前导斜杠:

@Route("book/{bookId}/{pageId}", name="open_book")

-2
投票

尝试更换此行

  url("open_book", { bookId: book_id, pageId: page_id })

通过

  url("open_book", { bookId: book_id, pageId: page_id }) | replace({'//': "/"})

要么

{{ app.request.schemeAndHttpHost }} {{ path("open_book", { bookId: book_id, pageId: page_id }) }}
© www.soinside.com 2019 - 2024. All rights reserved.