Symfony生成错误的url与double /
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Symfony生成错误的url与double /相关的知识,希望对你有一定的参考价值。
我正在研究一个symfony3项目,我遇到了一个问题,
我们正在发送基于树枝的电子邮件,其中包含一个指向我们平台的链接的按钮。
打开文档按钮链接如下:
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的值是/。似乎这是真正的问题。删除/打开该参数可以解决问题。
谢谢!!
对于控制器中的每个路径,您使用前缀/
:
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")
尝试更换此行
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 }) }}
以上是关于Symfony生成错误的url与double /的主要内容,如果未能解决你的问题,请参考以下文章