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 :

Action Update Personnalisé Symfony2 [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Points : 1 022
    Points
    1 022
    Par défaut Action Update Personnalisé Symfony2
    Bonjour a tous,
    j'ai une entité sujet manytomany avec entité tag .
    Mon objectif :
    Dans la vue , j'affiche le sujet et en bas ses tags associés .
    a coté de cette liste de tag je mets un button update pour changer ces tags ( ajouter d'autre ou supprimer ..)
    C'est pas une editAction comme d'habitude vu que je vais changer certains champs sans meme afficher ou changer les autres
    Je veux changer les tags seulement .
    Alors , J'ai :
    FormSujet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            $builder
                    ->add('sujet')
                    ->add('contenu', 'textarea',array('attr'=>  array('class'=>'ckeditor')))
                    ## ->add('datecreation')
                    ## ->add('datelus')
                    ->add('notification', 'checkbox', array('required' => false, 'data' => true))
                    ## ->add('user')
                    ->add('tags', 'entity', array('class' => 'MyApp\ForumBundle\Entity\tag',
                        'property' => 'title',
                        'expanded' => false,
                        'multiple' => true,
                        'required' => false))
     
            ;
    Vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <form role="form" method="post" {{ form_enctype(form) }} >
     
     
                                        {{form_widget(form.tags, { 'attr': { 'style': 'width: 150px' } }) }}</br></br>
     
                                      {{form_widget(form._token)}}
        <input type="submit"   value="Gem" class="btn btn-warning btn-lg">   
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
         <input type="reset" value="Annuler" style="background-color: transparent;border: 0px; color:#c52821;"> 
     
    </form>
    Action:
    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
        public function specialeditAction($id) {
           /*         * ************ simple edit action *************** */
            $em = $this->getDoctrine()->getManager();
            $sujet = $em->getRepository('MyAppForumBundle:sujet')->find($id);
            $s = $sujet->getSujet(); // get the current sujet pour le renvooyer aprés :)
            $c = $sujet->getContenu(); // get the current Contenu pour le renvooyer aprés :)
            if (!$sujet) {
                throw $this->createNotFoundException('No  sujet found for id ' . $id);
            }
     
            $form = $this->createForm(new sujetType(), $sujet);
            $request = $this->getRequest();
     
     
                 $form->bind($request);
                 $sujet = $form->getData(); // les données de la form 
                    $sujet->setSujet($s);  // j a'joute le sujet recuperé avant a la requete update
                    $sujet->setContenu($c);// j a'joute le Contenu recuperé avant a la requete update
                    $em->flush();
     
            return $this->render('MyAppForumBundle:sujet:specialedit.html.twig', array('form' => $form->createView()));
    apres avoir implementer ça , le changement s'effectue mais je peux pas recuperer les anciens choix de tags dans la form d'update !!

    Merci d'avance .

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 56
    Points : 60
    Points
    60
    Par défaut Agir avant le set et le flush
    Bonjour,
    Même si je n'ai pas bien compris le but de récupérer les anciennes valeurs de tags, celles-ci ne sont gérables qu'AVANT le set, voire le flush.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Points : 1 022
    Points
    1 022
    Par défaut
    merci kiza44 , je crois que je dois recupèrer les tags comme tous les autres attributs , ensuite je renvoie leurs id a la formulaire
    Si id "existe" alors je mets le checkbox concerné à "checked" .

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Points : 1 022
    Points
    1 022
    Par défaut
    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
        public function voirAction($id, Request $request) {
            $em = $this->getDoctrine()->getManager();
            $managersujet = $this->get('collectify_sujet_manager');/** equivalent de em manager * */
            $sujet = $managersujet->getOne($id);
            $form = $this->createForm(new sujetType(), $sujet);
     
            $managertag = $this->get('collectify_tag_manager');
     
     
            $inputtext = $this->getRequest()->get('i'); /* valeur array de String dans l input texte */
            /* text input de type string *///$inputtext[0]; 
            $alltags = $managertag->getAll(); /* array de tous les objets tags  */
             $tagaajouté = array(); // tableau vide
            foreach ($alltags as $tag) {
                $tagtitle = $tag->getTitle(); /* get title of objects :D */
                if (strpos($inputtext[0], $tagtitle) !== false) {
                    $selectedtag = $managertag->getByTitle($tagtitle);/* get objet tag by title */
                     array_push($tagaajouté, $selectedtag); 
                     $sujet->setTags($tagaajouté);
                }
            }
            $managersujet->persist($sujet);
    ////

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

Discussions similaires

  1. [2.x] url personnalisé symfony2.3.6
    Par MehrezLabidi dans le forum Symfony
    Réponses: 1
    Dernier message: 24/01/2015, 19h33
  2. [2.x] input personnalisé symfony2
    Par MehrezLabidi dans le forum Symfony
    Réponses: 2
    Dernier message: 20/08/2014, 15h44
  3. Composant composite et les action update de JSF
    Par geforce dans le forum JSF
    Réponses: 2
    Dernier message: 01/02/2012, 08h22
  4. [Continuum] Error executing action 'update-project-from-working-directory'
    Par Thotem dans le forum Intégration Continue
    Réponses: 0
    Dernier message: 26/01/2009, 11h32
  5. Mettre en place l'action "Software updates"
    Par gama2ee dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 13/09/2007, 11h37

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