fosjsrouting 转储不正确的路径
fosjsrouting dumping incorrect paths
我的正常 Symfony 4 路由按预期工作;但是 FOSJsRouting 生成的 url 缺少自动出现在 Twig 生成的 url.
中的 webroot/public
前缀
Twig 调用和输出
{{path(ci_chemical_show,{id:11409}) // http://localhost:8087/CIRdev/public/chemical/show/11409
FOSJsRouting 调用和输出
Routing.generate(ci_chemical_show,{id:11409}) //http://localhost:8087/chemical/show/11409
我的设置
我的 symfony config/routes/annotations.yaml 文件(有效)如下所示:
controllers:
resource: '../../src/Controller/'
type: annotation
控制器注释如下所示:
/**
* Class ChemicalController
* @package App\Controller\Chemical
* @Route("/chemical")
*
*/
class ChemicalController extends AbstractController
{
/**
* @Route("/show/{id}", name="ci_chemical_show", requirements={"id"="\d+"}, options={"expose"=true})
* @param Request $request
* @param Chemical $chemical
* @return Response
*/
public function show(Request $request, Chemical $chemical) {
return $this->render(':chemical/Chemical:show.html.twig', ['chemical' => $chemical]);
}
我的config/routes/for_js_routing.yaml文件是默认的:
fos_js_routing:
resource: "@FOSJsRoutingBundle/Resources/config/routing/routing-sf4.xml"
我已经按照 Symfony 4 docs 中的说明安装并配置了 FOSJsRouting。
I 运行 fos:js-routing:dump --format=json --target=public/js/fos_js_routes.json
产生了以下 json, 我认为这是错误的 因为它与 CIRdev/public 其中:
{
"base_url": "",
"routes": {
"ci_chemical_show": {
"tokens": [
[
"variable",
"\/",
"\d+",
"id",
true
],
[
"text",
"\/chemical\/show"
]
],
"defaults": [],
"requirements": {
"id": "\d+"
},
"hosttokens": [],
"methods": [],
"schemes": []
},
//etc.
因为这是一个非常普通的 Symfony 4 设置,我不知道为什么 FOSJsRouting 会这样。想法?
FOS JS 路由(和一般的控制台命令)对安装在子目录中的应用程序一无所知,因为它们无权访问计算它所必需的 RequestContext
,因此假设该应用程序是安装在 DocumentRoot
.
您生成的路由中的参数 base_url
是一个致命的赠品,可以配置,但您必须手动进行。您可以在 FOS-Js 的 Commands section 中阅读有关此警告的信息。
在 bundle 配置中设置参数 request_context_base_url
,但是当您 load your routes via the controller 而不是转储时不需要这样做。您可以通过 运行 bin/console config:dump-reference
.
查看所有配置选项
我的正常 Symfony 4 路由按预期工作;但是 FOSJsRouting 生成的 url 缺少自动出现在 Twig 生成的 url.
中的webroot/public
前缀
Twig 调用和输出
{{path(ci_chemical_show,{id:11409}) // http://localhost:8087/CIRdev/public/chemical/show/11409
FOSJsRouting 调用和输出
Routing.generate(ci_chemical_show,{id:11409}) //http://localhost:8087/chemical/show/11409
我的设置
我的 symfony config/routes/annotations.yaml 文件(有效)如下所示:
controllers:
resource: '../../src/Controller/'
type: annotation
控制器注释如下所示:
/**
* Class ChemicalController
* @package App\Controller\Chemical
* @Route("/chemical")
*
*/
class ChemicalController extends AbstractController
{
/**
* @Route("/show/{id}", name="ci_chemical_show", requirements={"id"="\d+"}, options={"expose"=true})
* @param Request $request
* @param Chemical $chemical
* @return Response
*/
public function show(Request $request, Chemical $chemical) {
return $this->render(':chemical/Chemical:show.html.twig', ['chemical' => $chemical]);
}
我的config/routes/for_js_routing.yaml文件是默认的:
fos_js_routing:
resource: "@FOSJsRoutingBundle/Resources/config/routing/routing-sf4.xml"
我已经按照 Symfony 4 docs 中的说明安装并配置了 FOSJsRouting。
I 运行 fos:js-routing:dump --format=json --target=public/js/fos_js_routes.json
产生了以下 json, 我认为这是错误的 因为它与 CIRdev/public 其中:
{
"base_url": "",
"routes": {
"ci_chemical_show": {
"tokens": [
[
"variable",
"\/",
"\d+",
"id",
true
],
[
"text",
"\/chemical\/show"
]
],
"defaults": [],
"requirements": {
"id": "\d+"
},
"hosttokens": [],
"methods": [],
"schemes": []
},
//etc.
因为这是一个非常普通的 Symfony 4 设置,我不知道为什么 FOSJsRouting 会这样。想法?
FOS JS 路由(和一般的控制台命令)对安装在子目录中的应用程序一无所知,因为它们无权访问计算它所必需的 RequestContext
,因此假设该应用程序是安装在 DocumentRoot
.
您生成的路由中的参数 base_url
是一个致命的赠品,可以配置,但您必须手动进行。您可以在 FOS-Js 的 Commands section 中阅读有关此警告的信息。
在 bundle 配置中设置参数 request_context_base_url
,但是当您 load your routes via the controller 而不是转储时不需要这样做。您可以通过 运行 bin/console config:dump-reference
.