Open
Description
Symfony 4.0.8
All cache cleared.
Followed steps
https://symfony.com/doc/master/bundles/FOSJsRoutingBundle/index.html
I do not have routing.yaml
in config/, it is replaced with routes.xml
. It does not accept resource parameter for route. Ok. Created routing.yaml
, only for this package with single entry point
fos_js_routing:
resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml"
registered bundle, added fos_js_routing.yaml in config/packages/ folder.
FOS\JsRoutingBundle\FOSJsRoutingBundle::class => ['all' => true],
fos_js_routing:
# router: my_router_service
cache_control:
# All are optional, defaults shown
public: false # can be true (public) or false (private)
maxage: null # integer value, e.g. 300
smaxage: null # integer value, e.g. 300
expires: null # anything that can be fed to "new \DateTime($expires)", e.g. "5 minutes"
vary: [] # string or array, e.g. "Cookie" or [ Cookie, Accept ]
linked files
<script src="{{ asset('bundles/fosjsrouting/js/router.min.js') }}"></script>
<script src="{{ asset('js/fos_js_routes.js') }}"></script> // tried also this way
<script src="{{ path('fos_js_routing_js', { callback: 'fos.Router.setData' }) }}"></script>
dumping php bin/console fos:js-routing:dump
or generatined with flex .json file are empty
routes.js
fos.Router.setData({"base_url":"","routes":[],"prefix":"","host":"custom.host.locc","scheme":"http"});
.json
{"base_url":"","routes":[],"prefix":"","host":"custom.host.locc","scheme":"http"}
parameters XML
<parameter key="router.request_context.host">custom.host.locc</parameter>
<parameter key="router.request_context.scheme">https</parameter>
Why so? What im doing wrong
Activity
Wimble84 commentedon May 6, 2018
Did you expose your routes ?
jhfyang commentedon Jul 19, 2018
I to have empty routres ! What do you mean expose ? I do not see anywhere in the documentation telling that you need to expose your routes
BonBonSlick commentedon Jul 21, 2018
I do not remember, removed package and developed own -_ - Maybe will try someday again.
carlospauluk commentedon Aug 14, 2018
Same here. fos_js_routes.json just returns with
{"base_url":"","routes":[],"prefix":"","host":"localhost","scheme":"http"}
stof commentedon Aug 14, 2018
XML also supports importing other resources: https://symfony.com/doc/current/routing/external_resources.html
carlospauluk commentedon Aug 14, 2018
Think I find the solution:
Ok, I think I found the problem. Here it is:
Checking how the FOSJsRoutingBundle works, I found the ExposedRoutesExtractor.php , that checks if "isRouteExposed" on "getRoutes()" method.
I found that I needed to expose my routes by setting the 'exposed' = true option on the @route, like this:
But, even after that, FOSJsRoutingBundle continues not showing anyone.
In this Issue FriendsOfSymfony/FOSRestBundle#718 they said that routes defined by annotations (FOSRest routes???) was not caught by this ExposedRoutesExtractor, only if they were exposed in yaml.
So I dit it. On config/routes/annotations.yaml I added:
controllers:
resource: ../../src/Controller/
type: annotation
options:
expose: true
Voila.
php bin/console fos:js-routing:debug now shows all my routes.
PythooonUser commentedon May 24, 2019
Thanks @carlospauluk for finding this!
I had the same issue. However,
bin/console fos:js-routing:debug
was showing me the annotation exposed route already, but callingRouting.generate()
resulted in an error.With that static config approach it works. Which is a bummer, because now all routes are exposed by default. But I can live with that :)
versedi commentedon Nov 13, 2019
Is it possible to expose routes while using yaml for routing definitions?
expose
key is unsupported in YamlFileLoader.Wimble84 commentedon Nov 13, 2019
Yes it is, like this :
versedi commentedon Nov 13, 2019
Thank you, my Google-Fu failed on me and couldn't find a single thing in the docs :)
o-alquimista commentedon Jan 19, 2020
I'm successfully exposing specific routes through their annotation:
Perhaps that means the issue @carlospauluk described is solved?
I think the documentation needs to put more emphasis on the need to expose the routes, and the many ways to do it, right before Generating URIs.
EliaCools commentedon Sep 15, 2021
Maybe you forgot to dump the newly exposed routes ? I overlooked this after exposing a route.
Symfony Flex
bin/console fos:js-routing:dump --format=json --target=public/js/fos_js_routes.json