Bonjour,
J'ai un one page et j'utilise donc sur la même page plusieurs route qui me permet d'afficher des informations de la base de donnée, gérer un filtre de catégorie etc....
Tout fonctionne bien sur au niveau du formulaire pour envoyer des emails. il est impossible de l'afficher .
Je précise que si je met une route avec une url différente de celle de ma onepage cela fonctionne très bien .Mais si je précise la même route que mon onepage .... error
J'essaye de plusieurs façon :
1 Je crée un template pour le formulaire de mail que j’inclus (méthode include ) sur ma on page.
2 je crée directement le controler avec la vue du onepage
le problème est que j'ai une erreur :
Variable "form" does not exist in laurentBundle:Default:contact.html.twig at line 7
j'ajoute donc à mon include le with {...}
1 2
|
{% include "laurentBundle:Default:contact.html.twig" with {'form': 'form'} %} |
Malheureusement j'ai une erreur de rendu du template
1 2 3 4
|
An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Argument 1 passed to Symfony\Component\Form\FormRenderer::searchAndRenderBlock()
must be an instance of Symfony\Component\Form\FormView, string given,
called in /Applications/MAMP/htdocs/Portfolio/app/cache/dev/twig/dd/68/f177e31b2194f31f44e4960fe8a287782ef96f0fbde168c24fae0b2f6fe8.php on line 40 and defined") in laurentBundle:Default:contact.html.twig at line 7. |
Je sais pas comment le résoudre ....
mes routes :
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
|
laurent_adminRealisations:
resource: "@laurentBundle/Resources/config/routing/realisations.yml"
prefix: /adminRealisations
laurent_route_realisations:
path: /
defaults: { _controller: laurentBundle:Default:listRealisations }
laurent_route_Sous_Menu:
path: /
defaults: { _controller: laurentBundle:Categories:sousMenu }
laurent_route_SelectionCategories:
path: /categorie/{categorie}
defaults: { _controller: laurentBundle:Categories:selectionCategories }
laurent_route_PresentationRealisations:
path: /realisation/{id}
defaults: { _controller: laurentBundle:Default:presentationRealisations }
laurent_route_Contact:
path: /
defaults: { _controller: laurentBundle:Default:contact }
requirements:
_method: GET|POST |
Le controller de mon formulaire mail
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
|
public function contactAction(){
$messagerie = new messagerie();
$form = $this->createForm(new ContactType(), $messagerie);
$request = $this->getRequest();
if ($request->getMethod() == 'POST') {
$form->bind($request);
if ($form->isValid()) {
$message = \Swift_Message::newInstance()
->setSubject('Contact enquiry from symblog')
->setFrom('enquiries@symblog.co.uk')
->setTo('email@email.com')
->setBody($this->renderView('laurentBundle:Default:contactEmail.txt.twig', array('messagerie' => $messagerie)));
$this->get('mailer')->send($message);
$this->get('session')->getFlashBag()->add('blogger-notice', 'Your contact enquiry was successfully sent. Thank you!');
return $this->redirect($this->generateUrl('laurent_route_Contact'));
}
}
return $this->render('laurentBundle:Default:contact.html.twig', array(
'form' => $form->createView()
));
}
} |
ma vue formulaire
1 2 3 4 5 6 7 8 9 10 11 12
|
{% for flashMessage in app.session.flashbag.get('blogger-notice') %}
{{ flashMessage }}
{% endfor %}
<form action="{{ path('laurent_route_Contact') }}" method="post" {{ form_enctype(form) }}>
{{ form_widget(form) }}
<input type="submit" />
</form> |
Ma vue de mon one page ( je ne met que le lien sensé relier le template mail et ma page
1 2
|
{% include "laurentBundle:Default:contact.html.twig" with {'form': 'form'} %} |
Si quelqu'un peut m'aider, je le remercie d'avance
Partager