Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony使用双精度生成不正确的url/_Php_Symfony_Routes_Twig - Fatal编程技术网

Php Symfony使用双精度生成不正确的url/

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

我在做一个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)%'
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上的路由问题。无论如何,你们的方法帮助我接近解决方案,所以,非常感谢你们。