FOSJSRoutingBundle: "la Route xxx n'existe pas"

je me pose vraiment un problème bizarre avec FOSJSRoutingBundle :

tout d'abord, voici ma configuration : je travaille sur Symfony 2.0.23 et avec JQuery, sur Windows 7 64 bits avec un WAMP (Apache 2.4.2 et PHP 5.4.3). J'ai fait tous les réglages du Github de FOSJSRoutingBundle et j'ai exposé mes routes ( presque tous les problèmes que j'ai pu trouver en googlant (sur le Github de FOSJSRoutingBundle,ici et sur différents forums) étaient parce que les gens n'ont pas exposé leurs routes, mais j'ai essayé l'application php / console fos:js-routing: debug et je vois mes routes). Le js est ajouté au layout (code du layout à la fin).

en essayant de générer une url pour les routes dans js, au début je voulais générer deux routes différentes mais pour test j'ai créé le code js ci-dessous :

//Code inside this function is working
$("select").change(function () {
  param=this.options[this.selectedIndex].value;
  test1=Routing.generate('myBundle_step3', { myParam: param });
  alert(test1);
  window.location=Routing.generate('myBundle_step2');
});
//Code inside this one is also working
$('input[type="checkbox"]').change(function() {
  test=Routing.generate('myBundle_step2');
}).change();
//This is not working
test=Routing.generate('myBundle_step2');
alert(test);

Avec ce code, j'obtiens l'erreur javaScript "La route myBundle_step2 n'existe pas". Bien que la première partie fonctionne toujours (alert me donne le lien créé et le la redirection se passe bien). Si je supprime la seconde fonction, Je n'obtiens plus L'erreur Javascript. Si dans la seconde fonction je remplace step2 par step3, l'erreur devient "la route myBundle_step3 n'existe pas". J'ai essayé de vider le cache et d'exécuter l'application php/console asset:install --symlink à nouveau, mais sans résultat.

voici le code correspondant au controller (le vrai code est un peu long et je ne pense pas qu'il soit pertinent, si vous le pensez, je pourrais le mettre de toute façon :

namespace myBundleController;
class IndividuController extends Controller
{
  public function step2Action() {
    Some code
  }
  public function step3Action($myParam) {
    Some code
  }
}

Le routage.yml fichier de config par rapport à l'ensemble :

myBundle_step2:
  pattern: /step/2
  defaults: {_controller: myBundle:Individu:step2}
  options:
    expose: true
myBundle_step3:
  pattern: /step/3/{myParam}
  defaults: {_controller: myBundle:Individu:step3}
  options:
    expose: true

app/config/routing.fichier yml :

fos_js_routing:
  resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml"

myBundle:
  resource: "@myBundle/Resources/config/routing.yml"
  prefix:   /

informations pertinentes de la mise en page :

 <!-- jQuery via Google + local fallback, see h5bp.com -->
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">    </script>
    <script>window.jQuery || document.write('<script src="js/jquery-1.7.1.min.js"></script>')</script>
       {% javascripts 'bootstrap/js/bootstrap.js'
                    'bundles/fosjsrouting/js/router.js'
                    'bundles/crrisuaps/js/suaps.js' %}
           <script type="text/javascript" src="{{ asset_url }}"></script>
       {% endjavascripts %}
    <script src="{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}"></script>
   </body>
</html>

résultat du routeur app/console php: debug (Je n'ai laissé que les informations pertinentes + j'ai laissé la notification de variable non définie juste au cas où, c'est une notification que j'ai reçue depuis que j'ai ajouté cette bibliothèque, encore la bibliothèque fonctionne et je ne pense pas que le problème pourrait venir d'ici :

C:wampwwwsuapsReposuaps>php app/console router:debug

Notice: Undefined variable: kPathUrl in C:wampwwwsuapsReposuapsvendorhtml2
pdf_classtcpdfConfig.php on line 80

Call Stack:
   0.0070     231536   1. {main}() C:wampwwwsuapsReposuapsappconsole:0
   0.0209     685656   2. require_once('C:wampwwwsuapsReposuapsappbootstr
ap.php.cache') C:wampwwwsuapsReposuapsappconsole:10
   0.0212     701752   3. require_once('C:wampwwwsuapsReposuapsappautoloa
d.php') C:wampwwwsuapsReposuapsappbootstrap.php.cache:3
   0.1335    2998152   4. require_once('C:wampwwwsuapsReposuapsvendorhtml
2pdfhtml2pdf.class.php') C:wampwwwsuapsReposuapsappautoload.php:51
   0.1379    3361792   5. require_once('C:wampwwwsuapsReposuapsvendorhtml
2pdf_classmyPdf.class.php') C:wampwwwsuapsReposuapsvendorhtml2pdfhtml2p
df.class.php:19
   0.1385    3393792   6. require_once('C:wampwwwsuapsReposuapsvendorhtml
2pdf_classtcpdfConfig.php') C:wampwwwsuapsReposuapsvendorhtml2pdf_class
myPdf.class.php:12

[router] Current routes
Name                                            Method Pattern
_assetic_55f0319                                ANY    /css/55f0319.css
_assetic_55f0319_0                              ANY    /css/55f0319_bootstrap_1.
css
_assetic_55f0319_1                              ANY    /css/55f0319_bootstrap-re
sponsive_2.css
_assetic_55f0319_2                              ANY    /css/55f0319_style_3.css
_assetic_3608a04                                ANY    /js/3608a04.js
_assetic_3608a04_0                              ANY    /js/3608a04_bootstrap_1.j
s
_assetic_3608a04_1                              ANY    /js/3608a04_router_2.js
_assetic_3608a04_2                              ANY    /js/3608a04_suaps_3.js

fos_js_routing_js                               ANY    /js/routing.{_format}
myBundle_homepage                        ANY    /

myBundle_inscription_etape1              ANY    /inscription/etape/1
myBundle_inscription_etape2              ANY    /inscription/etape/2
myBundle_inscription_etape3              ANY    /inscription/etape/3/{dis
ciplineSelection}

Résultat de php app/console fos:js-routage:debug (j'ai enlevé la notice PHP mais cela se produit à chaque commande je fais d'ailleurs) :

C:wampwwwsuapsReposuaps>php app/console fos:js-routing:debug
[router] Current routes
Name                               Method Pattern
crrisuapsBundle_inscription_etape2 ANY    /inscription/etape/2
crrisuapsBundle_inscription_etape3 ANY    /inscription/etape/3/{disciplineSelect
ion}

Edit : Aussi, je ne sais pas si c'est pertinent, mais lorsque j'essaie de "php app/console fos:js-routage:debug myBundle_step2" je reçois la suite d'erreur php :

[Exception D'Erreur] Attention: argument manquant 3 pour SymfonyBundleFrame BrundleCommandRouterDebugCommand: outputRoute (), appelé C:symfonyDirectoryvendorbundlesFOSJsRoutingBundleCommandRouterDebugExposedCommand.php sur la ligne 62 et défini dans C:serverDirectoryvendorsymfonysrcSymfonyBundleFrameworkBundleCommandRouterDebugCommand.php à la ligne 98

19
demandé sur MisterJ 2013-04-16 11:12:22

3 réponses

j'ai aussi eu ce problème. Réglage de l' options.expose paramètre sur la configuration du routage résolu pour moi.

routage.yml

cart_edit:
    pattern:  /Cart/edit
    defaults: { _controller: CartCartBundle:Default:cart_edit }
    options:
        expose: true

mon.js

var url = Routing.generate('cart_edit');
$.post(url, function(data) {
      //do somthing
});

changer au besoin. Espérons que cela permettra de résoudre votre problème.

50
répondu Azam Alvi 2016-09-21 19:49:46

j'ai eu le même problème et le problème était dans mon fichier de config. Essayez de vérifier pour ceci:

# app/config/config.yml
fos_js_routing:
    routes_to_expose: [ myBundle_step2, myBundle_step3, ... ]
6
répondu Ehsan 2014-01-28 13:15:30

Juste pour être complet: il est également possible d'utiliser des annotations (options={"expose"=true}) comme expliqué dans l' documentation:

// src/AppBundle/Controller/DefaultController.php

/**
 * @Route("/foo/{id}/bar", options={"expose"=true}, name="my_route_to_expose")
 */
public function indexAction($foo) {
    // ...
}

cela fonctionne aussi pour les réglages de routes au niveau du contrôleur (exemple d'un de mes contrôleurs):

/**
 * Channel controller.
 *
 * @Route("account/{account}/todos", options={"expose"=true})
 * @ParamConverter("account", class="AppBundle:Account", options={
 *     "repository_method" = "findOneById",
 *     "mapping": {"account": "id"},
 *     "map_method_signature" = true
 * })
 */
class TodoListController extends Controller
{
0
répondu Aerendir 2017-10-30 16:39:46