Начиная с Symfony 4, мне нужно сгенерировать динамический URL-адрес моего контроллера (контроллера, которому в будущем нужны некоторые параметры) из javascript.
После некоторых поисков в Google я нашел и установил jsrouting-bundle с помощью простого composer require friendsofsymfony/jsrouting-bundle
(я выполнил рецепт)
Я включил тезисные строки в свой файл ветки:
<script src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>
<script src="{{ path('fos_js_routing_js', { callback: 'fos.Router.setData' }) }}"></script>
<script src="build/js/global.js"></script>
Когда я загружаю свою страницу, ошибок javascript не появляется.
Итак, я создал этот очень простой контроллер Symfony (для вызова AJAX):
/**
* @Route("/API/test", name="ajax_test")
*/
public function test(){
$test = [
'a' => 'foo',
'b' => 'faa',
];
return new JsonResponse($test);
}
И в моем собственном сценарии JavaScript (global.js) я попробовал это:
предупреждение (Routing.generate ( 'ajax_test'));
Но когда я загружаю страницу, я получаю эту ошибку JavaScript:
Error: The route "ajax_test" does not exist.
Почему маршрут не найден? Где моя ошибка?
Примечания:
в документации friendsofsymfony / jsrouting-bundle , когда я выполнил команду bin/console assets:install --symlink web
, я получаю ошибку The target directory "web" does not exist.
. Итак, я выполнил просто bin/console assets:install --symlink
Если я перейду к "http://localhost/mywebsite/public/js/routing?callback=fos.Router.setData",, я получу /**/fos.Router.setData({"base_url":"\/mywebsite\/public","routes":[],"prefix":"","host":"localhost","port":"","scheme":"http"});