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 :

remplissage formulaire symfony


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Par défaut remplissage formulaire symfony
    Bonjour,
    A l'aide d'un formulaire, je crée des points, et je souhaiterais pourvoir les modifier. Donc j'aimerais utiliser le même formulaire et le préremplir avec un point déjà existant.
    J'ai cherché sur le forum, et il y a déjà des réponses qui pourraient marcher, mais le problème, c'est que je crée un bouton modifier pour chacun des points et je ne sais pas comment faire pour que ça soit le point du bouton qui remplisse mon formulaire.

    Voici mon code :

    -voir :
    Code : 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
    {# src/Site/PointBundle/Resources/views/defaults/index.html.twig #}
     
    {% extends "SitePointBundle::layout.html.twig" %}
     
    {% block title %}
      Accueil - {{ parent() }}
    {% endblock %}
     
    {% block tableau %} 
        <TABLE BORDER="2">   
        <tr>
            <th>{{ 'CodeSd' }}</th>
            <th>{{ 'Id' }}</th>
            <th>{{ 'Template' }}</th>
            <th>{{ 'Serveur' }}</th>
            <th>{{ 'Chemin' }}</th>
            <th>{{ 'Mini' }}</th>
            <th>{{ 'Maxi' }}</th>
            <th>{{ 'Increment' }}</th>
            <th>{{ 'titre' }}</th>
            <th>{{ 'Legende' }}</th>
          </tr>
        {% for Point in ListePoint %}   
          <tr>
            <th>{{ Point.CodeSd }}</th>
            <th>{{ Point.Id }}</th>
            <th>{{ Point.Template }}</th>
            <th>{{ Point.Serveur }}</th>
            <th>{{ Point.Chemin }}</th>
            <th>{{ Point.Mini }}</th>
            <th>{{ Point.Maxi }}</th>
            <th>{{ Point.Increment }}</th>
            <th>{{ Point.titre }}</th>
            <th>{{ Point.Legende }}</th>
            <th><a href="{{ path('site_point_modifier',{ 'id':Point.Id})  }}" >Modifier</a></th>
            <th><a href="{{ path('site_point_supprimer', { 'id':Point.Id }) }}">Supprimer</a></th>
          </tr>   
     
        {% else %}
          <li>Pas de code SD</li>
        {% endfor %}
        </TABLE>  
    {% endblock %}
    - modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <h3>Formulaire de Modification</h3>
     
    <div class="well">
      <form method="post" {{ form_enctype(form) }}>
        {{ form_widget }}
     
        <input type="submit" class="btn btn-primary" />
        <input type="reset" class="btn_reset" />
        <input type='button' name='cancel' value='Annuler' onclick=self.close()>
      </form>
    </div>
    -ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <h3>Formulaire de Modification</h3>
     
    <div class="well">
      <form method="post" {{ form_enctype(form) }}>
        {{ form_widget }}
     
        <input type="submit" class="btn btn-primary" />
        <input type="reset" class="btn_reset" />
        <input type='button' name='cancel' value='Annuler' onclick=self.close()>
      </form>
    </div>
    -mon controleur :
    Code : 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
    <?php
     
    namespace Site\PointBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Site\PointBundle\Entity\Point;
    use Site\PointBundle\Form\PointType;
    use Site\PointBundle\Form\RechercherType;
    use Site\PointBundle\Entity\Rechercher;
     
    class DefaultController extends Controller
    {public function ajouterAction()
        {
            $Point=new Point();
            $form = $this->createForm(new PointType, $Point);
            $request=$this->get('request');
            if($request->getMethod() == 'POST')
            {
                $form->bind($request);
                if($form->isValid())
                {
                    $em = $this->getDoctrine()->getManager();
                    $em->persist($Point);
                    $em->flush();
                    return $this->redirect($this->generateUrl('site_point_homepage'));
                }
            }
            return $this->render('SitePointBundle:Default:ajouter.html.twig', array('form' => $form->createView(),));
        }
    public function modifierAction()
        {
        $Point=new Point();
            $form = $this->createForm(new PointType, $Point);
            $request=$this->get('request');
            if($request->getMethod() == 'GET')
            {
                $form->bind($request);
                if($form->isValid())
                {
                    $em = $this->getDoctrine()->getManager();
                    $em->persist($Point);
                    $em->flush();
                    return $this->redirect($this->generateUrl('site_point_voir'));
                }
            }
            return $this->render('SitePointBundle:Default:ajouter.html.twig', array('form' => $form->createView(),));
        }
    }
    - et mon formulaire :
    Code : 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
    <?php
     
    namespace Site\PointBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
     
    class PointType extends AbstractType
    {
            /**
         * @param FormBuilderInterface $builder
         * @param array $options
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('CodeSd','text')
                ->add('template','choice', array('choices' => array('1'=>'Template 1','2'=>'Template 2','3'=>'Template 3')))
                ->add('serveur','text')
                ->add('chemin','text')
                ->add('mini','text')
                ->add('maxi','text')
                ->add('increment','checkbox',array('label'=> 'mini<maxi','required'=> false,))
                ->add('titre','text')
                ->add('legende','text')
     
            ;
        }
     
        /**
         * @param OptionsResolverInterface $resolver
         */
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'Site\PointBundle\Entity\Point'
            ));
        }
     
        /**
         * @return string
         */
        public function getName()
        {
     
            return 'site_pointbundle_point';
        }
    }
    J'ai vu sur les forums dans mon modifierAction, je devais mettre : $Point = SetPoint($monPoint)
    mais je ne sais pas comment récupérer $monPoint. Puis je ne sais pas si tout mon code est correct, je suis débutant en Symfony.

    Merci d'avance pour l'aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    tu donnes l'id du point a modifier a ton url pointant sur l'action modifier. Puis tu récupères ce point et hop plus qu'a le donner au form

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function modifierAction($id)
        {
            $em = $this->getDoctrine()->getManager();
            $Point= $em->getRepository('TonBundle:Point')->findOneById($id);
            $form = $this->createForm(new PointType, $Point);
            $request=$this->get('request');

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Par défaut
    je fais comme cela du coup?

    Code : 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
    public function modifierAction($id)
    	{
    em = $this->getDoctrine()->getManager();
            $Point= $em->getRepository('SitePointBundle:Point')->findOneById($id);
            $form = $this->createForm(new PointType, $Point);
            $request=$this->get('request');
    		if($request->getMethod() == 'POST')
    		{
    			$form->bind($request);
    			if($form->isValid())
    			{
    				$em->persist($Point);
    				$em->flush();
    				return $this->redirect($this->generateUrl('site_point_voir',array('CodeSd'=>$this->Point->getCodeSd())));
    			}
    		}
    		return $this->render('SitePointBundle:Default:modifier.html.twig', array('form' => $form->createView(),));
    	}
    Le problème c'est qu'il me dit :
    The controller for URI "/modifier/1" is not callable.

    alors que j'ai bien la méthode modifierAction. Du coup je vois pas

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    il faut modifier la route aussi !
    sinon sans modifier ca peut se faire comme ca je crois (mais c'est moins beau)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function modifierAction()
    {
        $request = $this->getRequest();
        $id = $request->get('id');
        $em = $this->getDoctrine()->getManager();
        $Point= $em->getRepository('SitePointBundle:Point')->findOneById($id);

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Par défaut
    Merci pour tout ça marche.
    En faite dans ma route modifier était modifer ....(ça risquait pas de marcher)

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Par défaut
    Bon j'ai un dernier petit problème, pour le moment.
    Je peux cliquer sur modifier qu'après avoir été sur la page voir.
    En cliquant sur modifier, l'adresse devrait être .../app_dev.php/modifier/15
    mais en faite elle devient .../app_dev.php/voir/modifier.
    Voici le code de mees routes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    site_point_voir:
        pattern:  /voir/{CodeSd}
        defaults: { _controller: SitePointBundle:Default:voir }
    site_point_modifier:
        pattern: /modifier/{id}
        defaults: { _controller: SitePointBundle:Default:modifier }
    Je sais qu'il manque quelquechose(@ je pense), mais en le mettant ça ne marche pas.

Discussions similaires

  1. Utiliser de l'OCR pour le remplissage d'un formulaire HTML
    Par Orangevinz dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 30/07/2018, 16h58
  2. [MySQL] Remplissage formulaire à la selection d'une valeur dans une liste
    Par Radh59 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/03/2010, 19h15
  3. Envoi d'un mail suite remplissage formulaire
    Par Alfred23 dans le forum Langage
    Réponses: 2
    Dernier message: 25/11/2009, 11h45
  4. [1.x] Validator Formulaire Symfony
    Par smusta dans le forum Symfony
    Réponses: 2
    Dernier message: 21/04/2009, 20h31
  5. Aide remplissage formulaire
    Par kanabzh29 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/09/2008, 14h32

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