THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Cas concret : je veux pouvoir passer en paramètre un sujet à la page de contact (du genre /contact?thelia_contact[subject]=Probleme_sur_article_DDFF465 ) et que le formulaire reprenne cette valeur

J'ai crée un routing :

    <route id="contact.view" path="/contact" methods="get">
        <default key="_controller">MyModule\Controller\MyModuleFrontController::contact</default>
        <default key="_view">contact</default>
    </route>

et dans mon contrôleur :

     public function contact() {
        $form = new \Thelia\Form\ContactForm($this->getRequest(), "form"));
        $form->getForm()->bind($this->getRequest());      
        return $this->render("contact", array(
            'form' => $form->createView()
        ));
     }

Mais çà ne fonctionne pas
J'ai l'impression que le template smarty ne reprend pas mon paramètre form

J'ai essayé de jouer avec  {form name="thelia.front.contact"} (en l'enlevant, en mettant form=$form, ...) mais sans succès ...

Quelle est la bonne façon de procéder ?

Offline


bon pour info,  j'ai trouvée cette solution :

$form = new \Thelia\Form\ContactForm($this->getRequest(), "form", array('subject'=>$subject));

$this->getParserContext()->set(get_class($form),$form);

Last edited by griotteau (04-09-2014 15:15:45)

Offline


Puur faire ça, tu n'a pas besoin de coder quoi que ce soit.

Tu peux tout à fait passer ton sujet comme ça : /contact?subject=Probleme_sur_article_DDFF465

et dans la form de ton template html, utiliser :

{form_field name="subject" form=$form}
   <input type="text" name="{$name}" value="{$smarty.get.subject}">
{/form_field}

Tu te retrouveras ainsi dans ta form le sujet passé dans l'URL smile


OpenStudio Toulouse