Php Symfony使用双精度生成不正确的url/
我在做一个symfony3项目,我遇到了一个问题 我们发送的电子邮件是基于树枝的,带有一个链接到我们平台的按钮 打开文档按钮链接如下: app.example.com/books/bookId/pageId 它是通过树枝生成的:Php Symfony使用双精度生成不正确的url/,php,symfony,routes,twig,Php,Symfony,Routes,Twig,我在做一个symfony3项目,我遇到了一个问题 我们发送的电子邮件是基于树枝的,带有一个链接到我们平台的按钮 打开文档按钮链接如下: app.example.com/books/bookId/pageId 它是通过树枝生成的: url("open_book", { bookId: book_id, pageId: page_id }) router.request_context.scheme: '%env(ROUTER_REQUEST_CONTEXT_SCHEME)%
url("open_book", { bookId: book_id, pageId: page_id })
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)%'
url是在控制器文件上定义的,带有注释
@Route("/book/{bookId}/{pageId}", name="open_book")
因此,用户在电子邮件中获得的链接是原始链接,但带有双//before books,如下所示:
app.example.com//books/bookId/pageId
我正在研究最后一个twig版本,我也不知道它是否会成为symfony的问题,因为它只发生在我们的prod环境中(它在本地工作,是的)
如果有帮助,我们的routing.yml
app:
resource: "@BooksBundle/Controller/"
type: annotation
prefix: /
host: app.%host%
这只发生在由细枝生成的URL上。我们也在使用jms转换和jms i18n捆绑包,所以我想可能是试图在两种语言之间设置一个空区域设置//如:
app.example.com/en/books/bookId/pageId
但是,可能是一种空洞的语言,而不是英语
有什么好主意吗
2018年1月3日更新
嘿谢谢你的回答。似乎symfony配置在最后出现了问题
在parameters.yml文件中:
url("open_book", { bookId: book_id, pageId: page_id })
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的值是/。看来这才是真正的问题。移除/打开该参数就可以了
谢谢 尝试替换此行
url("open_book", { bookId: book_id, pageId: page_id })
借
或
对于控制器中使用前缀
/
的每条路由:
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")
电子邮件是由命令生成的吗?这似乎是一个symfony问题。用答案更新了我的帖子。这看起来并不是问题的可靠解决方案,而是对它进行了修补关闭,但最后似乎是parameters.yml上的路由问题。无论如何,你们的方法帮助我接近解决方案,所以,非常感谢你们。