C'est plus une question de pur PHP que de Symfony ou Twig, si je comprends bien.
Tu as des paramètres optionnels pour ton action. Tu souhaites ne passer que l'ordre, qui est le second paramètre optionnel. Comment est-ce que PHP pourrait savoir que le seul paramètre que tu passes est le second dans l'ordre de déclaration ?
En PHP, quand il y a plusieurs paramètres optionnels dans la signature d'une fonction ou d'une méthode, si tu dois renseigner le dernier, il faut donner des valeurs pour tous ceux qui précèdent, malgré les "valeurs par défaut". Twig, qui fonctionne avec du PHP et est donc pensé pour des personnes familières avec la manière de fonctionner de ce langage, reproduit le même comportement.
C'est comme si tu voulais un escalier avec seulement une des marches, mais pas sa ou ses précédentes… Et surtout dans le cas où il devrait y en avoir plusieurs avant, tu veux laquelle exactement ?
Même si le nom est donné dans Twig avec l'index du tableau, PHP ne fait pas le lien quand il exécute l'appel… Et Twig n'est pas prévu pour effectuer une opération de réflexion sur la méthode appelée afin d'extraire les éventuels paramètres et valeurs manquantes.
Donc si tu veux avoir une marche, prévois qu'il faille renseigner les précédentes
Oui ce fut une erreur de ma part lors du copier mais le paramètre optionnel était bien à la fin.
Ceci dit je l'ai supprimé car je n'en ai absolument pas besoin et malgré cela le render ne ce fait pas. Tu coup après j'ai mis $object et là au miracle tout fonctionne. ;-)
Mais ce que je ne comprend toujours pas c'est pourquoi lui, alors que tous les autres fonctionnent, et pourquoi le profiler me dis status 202 alors que les autres ont un status à 200.
Alors si tu as d'autres idées je prends volontiers @Ymox
A+
" Celui qui aime à apprendre est bien près du savoir " Confucius
202 est un statut particulier, même s'il signifie que la requête a abouti. En gros, c'est pour spécifier que la requête principale peut être traitée, mais que les parties avec {{ render(…) }} ne sont pas gérées avec la même requête, et donc que la réponse principale ne peut pas garantir la réponse globale.
Ce qu'il faut savoir avec {{ render(…) }}, c'est que Symfony va simuler une requête interne pour rendre ce que tu lui demandes. Quatre {{ render(…) }} ? Quatre "sous-requêtes" qui ne dépendent que de la requête maître, mais qui ne sont pas inter-dépendantes. J'imagine que suivant la configuration du serveur, il peut faire de la réponse un flux et afficher les éléments au fur et à mesure, et donc risque de répondre 202 avant même de savoir si le premier {{ render(…) }} a fonctionné — et quand bien même, s'il ne fonctionnait pas, je ne pense pas que tu aurais une erreur, ce qui est apparemment ton cas actuellement.
Je crois avoir répondu à tes deux question, non ?
Tu ne peux pas passer qu'un paramètre optionnel qui ne soit pas le premier déclaré pour la fonction/méthode ;
Le statut HTTP 202 vient du mécanisme interne de Symfony avec des "sous-requêtes".
Je viens de faire un nouveau test avec une nouvelle action de controller testAction qui me renvoie une simple vue.
A savoir l'ordre des variables, facultative ou pas n'a pas d'importance car le cohérence se fait par le nom de la variable.
Mais bon bref, j'ai donc fait testAction sans arguments et flop total la vue n'est pas rendu. Par contre si j'injecte en argument une variable object ou id de la requête parent cela fonctionne parfaitement bien.
Je pense donc plus à un bug.
A ce stade je suis donc toujours bloqué.
A+.
" Celui qui aime à apprendre est bien près du savoir " Confucius
Symfony Twig render controller
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
" Celui qui aime à apprendre est bien près du savoir " Confucius
" Celui qui aime à apprendre est bien près du savoir " Confucius
" Celui qui aime à apprendre est bien près du savoir " Confucius