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 :

Inclusion de bundle [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 21
    Par défaut Inclusion de bundle
    Bonjour,

    J'aimerai comprendre pourquoi le formulaire de mon bundle lorsqu'il est inclus dans un template parent avec twig par la fonction render() et la fonction controller() ne fonctionne pas.
    Le code "$form->handleRequest($request)->isValid()" ne fonctionne jamais ni même l'affichage des erreurs par twig "{{ form_errors(form) }}".

    Lorsque j'envoie le formulaire la page se recharge mais rien ne se passe, ni enregistrement en BDD, ni erreur php, ni erreur Symfony2, ni message d'erreur du formulaire affiché par twig. Je reviens uniquement à la même page!

    Voici mon bundle, le fichier routing.yml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dg_apply:
        path:      /apply
        defaults:  { _controller: DGApplyBundle:Default:index }

    le controller qui contient la méthode indexAction:

    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
    <?php
     
    namespace DG\ApplyBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\RedirectResponse;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\HttpFoundation\Request;
     
    use DG\ApplyBundle\Entity\Apply;
    use DG\ApplyBundle\Form\ApplyType;
     
    class DefaultController extends Controller
    {
        public function indexAction(Request $request)
        {
            $apply = new Apply();
     
            $form = $this->get('form.factory')->create(new ApplyType(), $apply);
     
            if ($form->handleRequest($request)->isValid())
            {
                $em = $this->getDoctrine()->getManager();
                $em->persist($apply);
                $em->flush();
                echo 'Apply enregistrée!';
            }
            else
            {
               echo 'Apply non enregistrée!';
            }
     
            return $this->render
            (
                'DGApplyBundle:Default:index.html.twig', array
                (
                    'form' => $form->createView()
                )
            );
        }
    }
     
    ?>
    Le template twig du bundle inclus:

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <div class="section-row half-padding-bottom">
     
        <div class="container">
     
            <div class="row">
     
                <div class="col-lg-12">
     
                    <h1 class="section-title show-counter">
                        Appliquer chez W<span class="text-primary">ÿ</span>rd
                        <small>Vous vous sentez à la hauteur, venez affronter les plus monstrueuses créatures.</small>
                    </h1>
     
                </div>
     
            </div>
     
            <div class="row">
     
                <div class="col-md-12">
     
                    <div class="alert alert-danger text-center">
                        Tous les champs sont obligatoires
                    </div>
     
                    {{ form_start(form, {'attr': {'class': 'form-horizontal'}}) }}
     
                    {{ form_errors(form) }}
     
                    <div class="form-group">
                        <div class="col-md-12">
                            {{ form_widget(form.armory, {'attr': {'class': 'form-control', 'placeholder': 'URL de ton armurerie'}}) }}
                            {{ form_errors(form.armory) }}
                        </div>
                    </div>
     
                    <div class="form-group">
                        <div class="col-md-12">
                            {{ form_widget(form.login, {'attr': {'class': 'form-control', 'placeholder': 'Ton nom de joueur'}}) }}
                            {{ form_errors(form.login) }}
                        </div>
                    </div>
     
                    <div class="form-group">
                        <div class="col-md-12">
                            {{ form_widget(form.postuler, {'attr': {'class': 'btn btn-sm btn-block btn-primary'}}) }}
                        </div>
                    </div>
     
                    {{ form_rest(form) }}
                    {{ form_end(form) }}
     
                </div>
     
            </div>
     
        </div>
     
    </div>
    L'endroit où il est inclus dans le template parent d'un autre bundle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <section id="apply-form" class="section">
     
        <div class="section-row-container">
     
            {{ render(controller("DGApplyBundle:Default:index")) }}
     
        </div>
     
    </section>
    Comme dit le formulaire s'affiche bien mais ne fonctionne pas lorsque je l'envoie. Merci de votre aide.

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    dans applyType() tu as bien défini action ?

    ensuite pour savoir ou ça bloque dans le controller, tu peux user de die("ici");

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 21
    Par défaut
    Bonsoir,

    Oui il pointe vers la route du bundle parent + une ancre comme s'agit d'un site one page.
    Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $form = $this->get('form.factory')->create(new ApplyType(), $apply, array('action' => $this->generateUrl('dg_guild_homepage').'#apply-form'));
    Le code html généré est comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form name="dg_applybundle_apply" method="post" action="/app_dev.php/guild#apply-form" class="form-horizontal">
    Je peux mettre des die() mais il n'y a pas d'erreur dans le controller. Le problème vient de l'inclusion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ render(controller("DGApplyBundle:Default:index")) }}

  4. #4
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    les die c’était pour savoir si il y va au moins dans le controlleur comme ça , on sera fixé
    1. affiche la vue
    2. ajoute le die("ici"); début du controlleur
    3. submit


    autre chose, quand tu valides un formulaire, dans le controleur il y a 2 cas :
    1 : le form est valide
    donc tu retourne sur la vue avec le form vide form->create()
    2 : il y a des erreurs
    donc tu retournes sur la vue mais en renvoyant le form reçu tel quel (et non le form->create())


    dans ton code, pour le cas 1 ou 2 tu renvois toujours le form->create() donc problème

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 21
    Par défaut
    Je viens de faire ce que tu m'as demandé, la soumission va bien à l'URL: /app_dev.php/guild#apply-form et le controller du bundle qui contient le formulaire est bien chargé par cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ render(controller("DGApplyBundle:Default:index")) }}
    J'ai le die qui s'affiche:

    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
     
    <?php
     
    namespace DG\ApplyBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\RedirectResponse;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\HttpFoundation\Request;
     
    use DG\ApplyBundle\Entity\Apply;
    use DG\ApplyBundle\Form\ApplyType;
     
    class DefaultController extends Controller
    {
        public function indexAction(Request $request)
        {
            die('ici');
        	$apply = new Apply();
     
            $form = $this->get('form.factory')->create(new ApplyType(), $apply, array('action' => $this->generateUrl('dg_guild_homepage').'#apply-form'));
     
            if ($form->handleRequest($request)->isValid()) 
            {
                $em = $this->getDoctrine()->getManager();
                $em->persist($apply);
                $em->flush();
                echo 'Apply enregistrée!';
            }
            else
            {
                echo 'Apply non enregistrée!';
            }
     
            return $this->render
            (
            	'DGApplyBundle:Default:index.html.twig', array
            	(
          			'form' => $form->createView()
        		)
            );
        }
    }
     
    ?>

  6. #6
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    après tu faire un die si il passe le handle request->isvalid()


    quand tu affiche ta vue le render fait appel au controleur qui te fournira toujours le form->create() donc toujours le formulaire vide (sans les erreurs si il y en avait eu)

    car quand tu valides un formulaire, dans le controleur il y a 2 cas :
    1 : le form est valide
    tu enregistres en base
    tu retournes sur la vue avec le form vide form->create()
    2 : le form non valide : il y a des erreurs
    donc tu retournes sur la vue mais en renvoyant le form reçu car le handle request injecte les erreurs dedans (et donc dans ce cas ne pas envoyer form->create() mais form)


    dans ton code, pour le cas 1 ou 2 tu renvois toujours le form->create() donc problème



    un render controlleur avec un form dedans c'est peut etre pas une bonne idée ! voyons ....

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 21
    Par défaut
    Citation Envoyé par dukoid Voir le message
    ...
    dans ton code, pour le cas 1 ou 2 tu renvois toujours le form->create() donc problème
    ...
    un render controlleur avec un form dedans c'est peut etre pas une bonne idée ! voyons ....
    Tu soulèves deux points intéressant, je fais le test de suite...

  8. #8
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 21
    Par défaut
    Je viens de faire le test comme demandé en ajoutant le die() dans la condition isValid(), j'ai soumis le formulaire avec des données qui me semble valident et je n'y vais pas :-/.

    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
    <?php
     
    namespace DG\ApplyBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\RedirectResponse;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\HttpFoundation\Request;
     
    use DG\ApplyBundle\Entity\Apply;
    use DG\ApplyBundle\Form\ApplyType;
     
    class DefaultController extends Controller
    {
        public function indexAction(Request $request)
        {
        	$apply = new Apply();
     
            $form = $this->get('form.factory')->create(new ApplyType(), $apply, array('action' => $this->generateUrl('dg_guild_homepage').'#apply-form'));
     
            if ($form->handleRequest($request)->isValid()) 
            {
                die('ici');
                $em = $this->getDoctrine()->getManager();
                $em->persist($apply);
                $em->flush();
                echo 'Apply enregistrée!';
            }
            else
            {
                echo 'Apply non enregistrée!';
            }
     
            return $this->render
            (
            	'DGApplyBundle:Default:index.html.twig', array
            	(
          			'form' => $form->createView()
        		)
            );
        }
    }
     
    ?>

  9. #9
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    pour savoir quelles erreurs, dans le controleurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    else {
    dump($form->getErrors());
    exit;
    }

  10. #10
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 21
    Par défaut
    :-/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FormErrorIterator {#4792 ▼
      -form: Form {#4823 ▶}
      -errors: []
    }

  11. #11
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    lol
    peut être que le submit envois un formulaire vide, voyons :

    avec firebug, onglet réseau :
    tu submit, une requete apparaît et analyses là
    tu devrais voir dans la requete les champs et valeurs du formulaire, est-ce le cas ?


    ps: d'ailleurs, tu peux même voir ça avec le profil de Symfony : la barre de dev Symfony en bas du navigateur

  12. #12
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 21
    Par défaut
    Oui j'ai:

    Request URL:http://www.wyrd.dev/app_dev.php/guild
    Request MethodOST
    Status Code:200 OK
    Remote Address:127.0.0.1:80
    Response Headers
    view source
    Cache-Control:no-cache
    Connection:Keep-Alive
    Content-Type:text/html; charset=UTF-8
    Date:Wed, 09 Dec 2015 20:08:33 GMT
    Keep-Alive:timeout=5, max=100
    Server:Apache/2.4.9 (Win64) PHP/5.5.12
    Transfer-Encoding:chunked
    X-Debug-Token:d090bd
    X-Debug-Token-Link:/app_dev.php/_profiler/d090bd
    X-Powered-ByHP/5.5.12
    Request Headers
    view source
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Encoding:gzip, deflate
    Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
    Cache-Control:max-age=0
    Connection:keep-alive
    Content-Length:213
    Content-Type:application/x-www-form-urlencoded
    CookieHPSESSID=1labjqog41ni9611356f4ho737
    Host:www.wyrd.dev
    Origin:http://www.wyrd.dev
    Referer:http://www.wyrd.dev/app_dev.php/guild
    Upgrade-Insecure-Requests:1
    User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36
    Form Data
    view source
    view URL encoded
    dg_applybundle_apply[firstname]:hgjhgjhg
    dg_applybundle_apply[age]:jhgjh
    dg_applybundle_apply[postuler]:
    dg_applybundle_apply[_token]:5yiMka9Fjra7-v9iJNdY5v05KBT99H2hjbXJzrF3cFA
    ______________________________________________________________________

    dg_applybundle_apply[postuler] étant le champ submit créer dans le applyType:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    /**
         * @param FormBuilderInterface $builder
         * @param array $options
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('firstname', 'text')
                ->add('age', 'text')
                ->add('postuler', 'submit')
            ;
        }

  13. #13
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    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
    24
    25
    26
    27
    28
    29
    30
    31
     public function indexAction(Request $request)
        {
    dump($request); // voir dans la requete si les valeurs sont dedans ?
    
            $apply = new Apply();
     
            $form = $this->get('form.factory')->create(new ApplyType(), $apply);
     
            $form->handleRequest($request);
            if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $em->persist($apply);
                $em->flush();
                echo 'Apply enregistrée!';
            }
            else
            {
               echo 'Apply non enregistrée!';
    dump($form->getErrors());
            }
     exit;
            return $this->render
            (
                'DGApplyBundle:Default:index.html.twig', array
                (
                    'form' => $form->createView()
                )
            );
        }
    }


    j'ai modifié ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ($form->handleRequest($request)->isValid())
            {
    //ok
            }
            else
            {
          // pas ok    
            }
    avec ce code, on vois que le handlerequest envois le formulaires dans $form MAIS il me semble que si il y a une erreur il va dans la boucle else mais ce n'est pas le $form avec le formulaire inclus mais le $form du create donc vide

    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            $form->handleRequest($request);
            if ($form->isValid()) {
    // ok
    }
    else {
    // pas ok
    }
    ainsi le $form est affecté ds le depart par les données du formulaire et donc valable dans les 2 cas.

    je ne sais pas si c'est ça mais bon ..... après je ne vois plus

  14. #14
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 21
    Par défaut
    Voici le retour du dump($request):

    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
    DefaultController.php on line 17:
    Request {#4594 ▼
      +attributes: ParameterBag {#4555 ▶}
      +request: ParameterBag {#4595 ▶}
      +query: ParameterBag {#4507 ▶}
      +server: ServerBag {#4648 ▶}
      +files: FileBag {#4597 ▶}
      +cookies: ParameterBag {#4556 ▶}
      +headers: HeaderBag {#4662 ▶}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: null
      #pathInfo: "/_fragment"
      #requestUri: "/app_dev.php/_fragment?_path=_format%3Dhtml%26_locale%3Den%26_controller%3DDGGuildApplyBundle%253ADefault%253Aindex"
      #baseUrl: "/app_dev.php"
      #basePath: null
      #method: "GET"
      #format: null
      #session: Session {#196 ▶}
      #locale: "en"
      #defaultLocale: "en"
    }
    et le retour du dump($form->getErrors()):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DefaultController.php on line 34:
    FormErrorIterator {#4850 ▼
      -form: Form {#4881 ▶}
      -errors: []
    }
    Ce qui me choc c'est la ligne: #method: "GET"

    Je ne comprends pas vraiment, pour moi le problème vient de ma façon d'inclure le bundle dans un autre comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ render(controller("DGApplyBundle:Default:index")) }}
    Mais je ne sais pas pourquoi cela réagit comme ça...

  15. #15
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    en effet "GET" et il manque les données du formulaire.
    question bete, ta vue et l'appel du render controller ne fait pas appel à la même action ?
    sinon, je ne vois pas..... je me rends...

  16. #16
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 21
    Par défaut
    De quelle vue tu parles, celle du bundle du formulaire? Ou celle dans lequel le bundle est inclus?

  17. #17
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    tu as la vue principale c'est toute la page et disons une vue partiel en twig qui est un bout qui contient le formulaire.

    le controller du render envois le bout de vue à la page principale quoi.
    (comme quand tu fais un include )

  18. #18
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 21
    Par défaut
    Non je n'ai qu'un formulaire dans le code html.

    Oui c'est ça j'ai un bundle principal nommé GuildBundle pour lequel on accède depuis l'url http://www.wyrd.dev/app_dev.php/guild comme tu as pu le constater dans les logs network de fierbug.
    Ce bundle à un controller, une route et vue.

    Voila ce que fais le controller de GuildBundle:

    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
     
    namespace DG\GuildBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\RedirectResponse;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\HttpFoundation\Request;
     
     
    class InfoController extends Controller
    {
      public function indexAction($id, Request $request)
      {
     
        $content = $this->get('templating')->render
        (
          'DGGuildBundle:Info:home.html.twig'
        );
     
        $response = new Response();
     
        $response->setContent($content);
     
        return $response;
     
      }
    }
    Le bundle ApplyBundle à lui aussi un controller, une route et une vue (comme tu le lis depuis tte) qui est inclus dans la vue de GuildBundle par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ render(controller("DGApplyBundle:Default:index")) }}
    Pour info quand je passe par l'url définie dans le route du bundle AplpyBundle: http://www.wyrd.dev/app_dev.php/apply et que je dirige l'action du formulaire sur cette même page le formulaire fonctionne.

  19. #19
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    cette dernière information est importante et ça change tout. On cherché là ou il ne fallait pas (surtout moi lol)

    je pense que quand tu submit ce n'est pas la $request du render controller qui est utilisé mais celui de la vue donc ça fausse la donne.


    peut être en forçant ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <form action="{{ url('ma_route') }}" method="post" {{ form_enctype(form) }}>
    la bonne route associé avec le bon formulaire !
    avec url il envoit directement au controlleur et non à sa vue parente

  20. #20
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 21
    Par défaut
    Tu veux dire en mettant dans le action du formulaire sa propre route:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="dg_applybundle_apply" method="post" action="/app_dev.php/apply" class="form-horizontal">
    à la place de la home page:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="dg_applybundle_apply" method="post" action="/app_dev.php/guild#form-apply" class="form-horizontal">
    Si c'est ça que tu veux dire, oui ça fonctionne par contre dans ce cas je dois faire une redirection vers la home une fois les traitements effectués!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant][bundle] plusieurs "bundle"
    Par lando dans le forum Développement Web en Java
    Réponses: 12
    Dernier message: 11/09/2003, 18h13
  2. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 13h33
  3. Inclusion de fichier .h
    Par Tony49 dans le forum C++Builder
    Réponses: 2
    Dernier message: 06/11/2002, 11h10
  4. Générer un nombre aléatoire entre 0 et 1 (INCLUS !!!)
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 22/08/2002, 16h30
  5. Inclusion de fichiers en IDL
    Par babou dans le forum CORBA
    Réponses: 10
    Dernier message: 30/07/2002, 16h47

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