Problème \d+ ("" given) Symfony2

Fermé
Pépito - Modifié par Pépito le 27/07/2016 à 16:58
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 - 29 juil. 2016 à 14:17
Bonjour,

J'ai cette erreur qui s'affiche :

"An exception has been thrown during the rendering of a template ("Parameter "client_id" for route "app_client_remove" must match "\d+" ("" given) to generate a corresponding URL.") in ::client/form.html.twig"

J'aimerai savoir si quelqu'un a déjà eu cette erreur :/

Merci d'avance

2 réponses

Salut, cela veut dire que ta route attend un entier en paramètre et tu lui donnes une chaine de caractères vide. Avec du code ce sera plus facile de t'aider. Puisque l'erreur concerne la génération d'une vue, je pense mais je peux me tromper, que c'est lorsque tu génere une URL avec twig path('route') ou un render(controller...


׺°"~'"°º×]|I{*------» LÖBÖTÖ «------*}I|[׺°"~'"°º×
2
Salut,

Je me doutais que ça venait, mais je ne vois vraiment pas l'erreur :/

Voici mon code qui est dans ma vue :
<div class="actions">
{{ macro.btnRemoveItem('app_client_remove', {'site_id':site.id, 'site_slug':site.slug, 'client_id':client.id, 'client_slug':client.slug}, 'removeClient') }}
</div>
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566 > Pépito
28 juil. 2016 à 15:06
Et dans la définition de ta macro, il y a quoi ?
0
{% macro btnRemoveItem(route, params = {}, title = '') -%}
    {% if hasUserAccessToRoute(app.user, route) %}
        <a href="{{ path(route, params) }}" rel="nofollow" target="_blank" class="btn btn-circle btn-icon-only btn-danger" {% if title != '' %}data-original-title="{{ title | trans | capitalize }}" data-placement="left" {% endif %}><i class="fa fa-trash"></i></a>
    {% endif %}
{%- endmacro %}
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566 > Pépito
28 juil. 2016 à 15:21
un de tes paramètres est probablement vide, soit site_id, soit client_id, vérifie bien ça. Vérifie également le nommage de tes paramètres...
0
C'est à dire que j'utilise cette macro dans mon form, qui sert a créer et à éditer. le editAction fonctionne alors que le problème survient à l'ajout :/ Enfin cette erreur s'affiche seulement lors de l'ajout ..
0
Utilisateur anonyme
28 juil. 2016 à 19:24
L'erreur vient de client_id, si ton form concerne un client, c'est normal que lors de sa création il n'est pas encore de id.
0
Oui ça je sais bien, mais j'utilise ce form également pour la modification du coup je voulais voir si on pouvait mettre une condition pour que lorsqu'on prend cette route pour l'ajout il n'affiche pas le client_id et si on prend la route de l'édition il l'afiiche, ou quelque chose comme ça ? :/
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
29 juil. 2016 à 09:20
Tu peux toujours définir ton paramètre comme facultatif au niveau de ta route, puis faire une gestion différente dans ton contrôleur si ce paramètre est absent...
0
Pépito > ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021
29 juil. 2016 à 09:24
Est ce que tu aurais un exemple à me soumettre pour le définir en facultatif au niveau de ta route et dans mon contrôleur s'il te plait ?
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
29 juil. 2016 à 14:17
/**
 * @Route("/blog/{page}", name="blog_list", requirements={"page": "\d+"})
 */
public function listAction($page = null)
{
	if ($page === null) {
		// ce que tu fais dans ce cas...
	}
	// ...
}
0