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
|
namespace My\Namespace\Controller
//ajouter ici les déclarations use typique des contrôleurs...
use My\Namespace\Form\BookType;
class BookController extends Controller
{
public function addAction(Request $request)
{
//tu crées un objet book
$book = new Book;
//tu crées un formulaires de type book et l'associe à ton objet book
$form = $this->createForm(new BookType, $book);
//ce code s'exécute uniquement après soumission du forumulaire
//$form essaie de créer un objet Book valide à partir des variables envoyées par le formulaire
$form->handleRequest($request);
//si unobjet Book est correctement formé, tu peux maintenant faire tes opérations
if($form->isValid()) {
//tu récupères ta classe pour traiter le nom (qu'on appelera par exemple NameHandler) depuis le conteneur de services (il faudra du coup que tu regarde aussi ce qu'est le conteneur de services)
$name_handler = $this->container->get('namehandler');
//tu peux aussi le faire à la sauvage en instanciant directement $name_handler avec
//$name_handler = new My\Namespace\NameHandler();
//c'est plus court mais je ne recommande pas, c'est de la mauvaise programmation. Le fait d'avoir accès à tout le conteneur de services depuis le contrôleur me dérange déjà suffisamment!
//tu fais ensuite ton opération, ex calculer la longueur du nom
$name_length = $name_handler->calculateLength($book->getAuthor());
//tu insères la longueur dans ton objet $book
$book->setAuthorNameLength($name_length);
//et ensuite tu rediriges vers une autre page, comme il est de bonne pratique pour les requêtes POST. C'est dans cette page que tu afficheras la longueur du nom par exemple.
return $this->redirect($this->generateUrl('add_success'));
}
//lorsque le formulaire s'affiche au départ (avant submission), on envoie l'objet $form à une vue, qui se chargera de l'afficher.
return $this->render('MyNamespace:Book:add.html.twig', ['form' => $form->createView()]);
}
} |
Partager