Symfony 4中没有服务FOSJsRoutingBundle

mat*_*464 2 php bundle symfony

错误:

An exception has been thrown during the rendering of a template 

"You have requested a non-existent service "C". Did you mean one of
these: "Symfony\Bundle\FrameworkBundle\Controller\RedirectController",
"Symfony\Bundle\FrameworkBundle\Controller\TemplateController
Run Code Online (Sandbox Code Playgroud)

如何在symfony 4中打开FOSJsRoutingBundle?

bundles.php:

FOS\JsRoutingBundle\FOSJsRoutingBundle::class => ['all' => true] 
Run Code Online (Sandbox Code Playgroud)

routes.yaml:

fos_js_routing:
    resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml"
Run Code Online (Sandbox Code Playgroud)

layout.html.twig:

<script src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>
<script src="{{ path('fos_js_routing_js', { callback: 'fos.Router.setData' }) }}"></script>
Run Code Online (Sandbox Code Playgroud)

Arn*_*mon 6

您使用webpack吗?如果是,则无需将此代码包括在模板中:

<script src="{{ asset('bundles/fosjsrouting/js/router.min.js') }}"></script>
<script src="{{ path('fos_js_routing_js', { callback: 'fos.Router.setData' }) }}"></script>
Run Code Online (Sandbox Code Playgroud)

您所要做的就是运行以下命令:

bin/console fos:js-routing:dump --format=json --target=public/js/fos_js_routes.json

然后将此代码包含在资产文件夹中的.js文件中:

const routes = require('../../web/js/fos_js_routes.json');
import Routing from '../../vendor/friendsofsymfony/jsrouting-bundle/Resources/public/js/router.min.js';

Routing.setRoutingData(routes);
Routing.generate('rep_log_list');
Run Code Online (Sandbox Code Playgroud)

本指南参考此文档:FOSJsRouting用法