IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

[symfony 3.4.2] Erreur paramètres regex route


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 125
    Points : 104
    Points
    104
    Par défaut [symfony 3.4.2] Erreur paramètres regex route
    bonjour,
    Je developpe en Symfony 3.4.2 un petit projet.

    fichier routing.yml
    Code yml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    factvente_add:
        path:     /factventeadd
        defaults: { _controller: ZGZagabaBundle:Main:factventeAdd }
     
    factvente_del:
        path:     /factventedel/{id}
        defaults: { _controller: ZGZagabaBundle:Main:factventeDel }
        requirements:
            id:'(\d{4}/[AZ]{2}/\d{1,6})'
     
    factvente_list:
        path:     /factventelist
        defaults: { _controller: ZGZagabaBundle:Main:factventeList }
     
    factvente_find:
        path:     /
        defaults: { _controller: ZGZagabaBundle:Main:factventeFind }
     
    factvente_up:
        path:     /factventeup/{id}
        defaults: { _controller: ZGZagabaBundle:Main:factventeUp }
        requirements:
            id:'(\d{4}/[AZ]{2}/\d{1,6})'

    fichier dans le contrôleur affichant la liste des factures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public function factventeListAction()
    {
    	$em = $this->getDoctrine()->getManager();
     
    	$listFacturevente = $em->getRepository('ZGZagabaBundle:Facture_vente')->findBy(
    	  array(),                 // Pas de critère
    	  array('id' => 'desc')
    	);
     
    	return $this->render('ZGZagabaBundle:Template:factventeList.html.twig', array(
    		'listFacturevente' => $listFacturevente
    	));
    }
    Template d'affichage liste facture factventeList.html.twig
    Code Twig : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    {% block body %}
     
    	<div class="animated fadeIn">
    		<div class="row">
    			<div class="col-md-12">
    				<p>
    					<a href="{{ path('factvente_add') }}" class="btn btn-primary btn-sm">
    						{#<i class="glyphicon glyphicon-chevron-left"></i> fa fa-table #}
    						<i class="fa fa-chevron-left"></i> 
    						Nouveau Produit
    					</a>
    				</p>
    			</div>
    			<div class="col-md-12">
    				<div class="card">
    					<div class="card-header">
    						<strong class="card-title">Liste des Factures d'achat</strong>
    					</div>
    					<div class="card-body">
    						<table id="bootstrap-data-table-export" class="table table-striped table-bordered">
    							<thead>
    								<tr>
    									<th>Exercice</th>
    									<th>N° Vente</th> 
    									<th>N° Facture</th>
    									<th>Mnt Facture</th>
    									<th>Mnt Payé</th>
    									<th>Mnt Restant</th>
    								{#	<th>Date paie</th> #}
    									<th width="5%">Modif</th>
    									<th width="5%">Supp</th>
    								</tr>
    							</thead>
    							<tbody>								
    								{% for factvente in listFacturevente %}
    								<tr>
    									<td> {{ factvente.exeId.getId() }} </td>
    									<td> {{ factvente.venId.getId() }} </td> 
    									<td> {{ factvente.id }} </td>
    									<td> {{ factvente.mntTotal }} </td>
    									<td> {{ factvente.mntPaye }} </td>
    									<td> {{ factvente.mntRest }} </td>
    								{#	<td> {{ factvente.datePaie }} </td> #}
    									<td align="center" > <a href="{{ path('factvente_up', {'id': factvente.id}) }}"> <img src="{{ asset('images/edit.png') }}" alt="Logo"> </a> </td>
    									<td align="center"> <a href="{{ path('factvente_del', {'id': factvente.id}) }}"> <img src="{{ asset('images/del.png') }}" alt="Logo"> </a> </td>
    								</tr>
    								{% endfor %}							  
    							</tbody>
    						</table>
    					</div>
    				</div>
    			</div>
    		</div>
    	</div>
    	<!-- .animated -->
     
    {% endblock %}

    Quand j'essaie d'afficher la liste des factures dans la vue, j'ai une erreur concernant le format de mes routes factvente_up et factvente_del. Le paramètre sur l'ID des routes est un regex qui me permet d'imposer un format de l'id de facture sous le format 2019/ZG/12 (année sur 4 chiffres, bar , deux caractères, bar, un nombre qui peut être sur 6 chiffres)
    Exception thrown when handling an exception (Symfony\Component\Config\Exception\FileLoaderLoadException:
    Catchable Fatal Error: Argument 3 passed to Symfony\Component\Routing\Route::__construct() must be of the type array, string given,
    called in C:\wamp64\www\zagaba\vendor\symfony\symfony\src\Symfony\Component\Routing\Loader\YamlFileLoader.php on line 130
    and defined in C:\wamp64\www\zagaba\src\ZG\ZagabaBundle/Resources/config/routing.yml (which is being imported from "C:\wamp64\www\zagaba/app/config\routing.yml").)

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    L'expression régulière n'est pas correcte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \d{4}\/[A-Z]{2}\/\d{1,6}
    testé sur regex101.com

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 125
    Points : 104
    Points
    104
    Par défaut
    je suis loin de mon poste de travail, je vais vérifier après. merci

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 125
    Points : 104
    Points
    104
    Par défaut
    En modifiant \d{4}/[AZ]{2}/\d{1,6} en \d{4}\/[A-Z]{2}\/\d{1,6}, j'ai toujours la même erreur de départ. j'ai essayé de modifier le regex de la route pour accepter simplement une chaine de caractère sans les bars /, comme ceci
    Code yml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    factvente_del:
        path:     /factventedel/{id}
        defaults: { _controller: ZGZagabaBundle:Main:factventeDel }
        requirements:
            id:\w
    factvente_up:
        path:     /factventeup/{id}
        defaults: { _controller: ZGZagabaBundle:Main:factventeUp }
        requirements:
            id:\w
    la même erreur réapparait et je ne peut accéder à aucun autre lien de mon application.

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 125
    Points : 104
    Points
    104
    Par défaut
    toujours pas de solution à mon problème?

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 125
    Points : 104
    Points
    104
    Par défaut
    Maintenant j'ai cette erreur
    An exception has been thrown during the rendering of a template ("Parameter "id" for route "factvente_up" must match "[^/]++" ("2019/ZG/2" given) to generate a corresponding URL.").

  7. #7
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 125
    Points : 104
    Points
    104
    Par défaut
    j'ai finalement trouvé la solution. il fallait juste enlever les '' et les parenthèses (): \d{4}\/[A-Z]{2}\/\d{1,6}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Camel] Traitement des erreurs dans une route
    Par Dr_GreenThumb dans le forum Java EE
    Réponses: 3
    Dernier message: 18/03/2014, 12h09
  2. [2.x] Tuto symfony 2 de djayp : erreur controller
    Par stallaf dans le forum Symfony
    Réponses: 10
    Dernier message: 17/07/2012, 12h36
  3. [1.x] Twig sans Symfony et page d'erreur (404)
    Par lapaupiette dans le forum Symfony
    Réponses: 2
    Dernier message: 23/12/2011, 11h19
  4. erreur avec regex ou listview
    Par cleecky dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/06/2011, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo