Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| framework-web:symfony:controllers [2018/01/30 02:30] – créée jcheron | framework-web:symfony:controllers [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 8: | Ligne 8: | ||
| namespace App\Controller; | namespace App\Controller; | ||
| - | + use Symfony\Bundle\FrameworkBundle\Controller\Controller; | + | use Symfony\Bundle\FrameworkBundle\Controller\Controller; |
| - | - class LuckyController | + | class LuckyController extends Controller |
| - | + class LuckyController extends Controller | + | |
| { | { | ||
| // ... | // ... | ||
| } | } | ||
| + | </ | ||
| + | |||
| + | ===== Opérations courantes ===== | ||
| + | |||
| + | ==== Génération d'urls ==== | ||
| + | |||
| + | <sxh php> | ||
| + | $url = $this-> | ||
| + | </ | ||
| + | |||
| + | ==== Redirections ==== | ||
| + | |||
| + | <sxh php> | ||
| + | use Symfony\Component\HttpFoundation\RedirectResponse; | ||
| + | |||
| + | // ... | ||
| + | public function index() | ||
| + | { | ||
| + | // redirect to the " | ||
| + | return $this-> | ||
| + | |||
| + | // redirectToRoute is a shortcut for: | ||
| + | // return new RedirectResponse($this-> | ||
| + | |||
| + | // do a permanent - 301 redirect | ||
| + | return $this-> | ||
| + | |||
| + | // redirect to a route with parameters | ||
| + | return $this-> | ||
| + | |||
| + | // redirect externally | ||
| + | return $this-> | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Appel d'un template ==== | ||
| + | |||
| + | <sxh php> | ||
| + | // renders templates/ | ||
| + | return $this-> | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Appel de services ==== | ||
| + | |||
| + | L' | ||
| + | |||
| + | <sxh php> | ||
| + | use Psr\Log\LoggerInterface | ||
| + | // ... | ||
| + | |||
| + | /** | ||
| + | * @Route("/ | ||
| + | */ | ||
| + | public function number($max, | ||
| + | { | ||
| + | $logger-> | ||
| + | // ... | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | La commande suivante liste les services directement injectables : | ||
| + | |||
| + | <sxh bash; | ||
| + | php bin/console debug: | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== L' | ||
| + | |||
| + | L' | ||
| + | |||
| + | <sxh php> | ||
| + | use Symfony\Component\HttpFoundation\Request; | ||
| + | |||
| + | public function index(Request $request, $firstName, $lastName) | ||
| + | { | ||
| + | $page = $request-> | ||
| + | |||
| + | // ... | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ou en utilisant la méthode statique : | ||
| + | |||
| + | <sxh php> | ||
| + | $request = Request:: | ||
| + | </ | ||
| + | |||
| + | ==== L' | ||
| + | |||
| + | L' | ||
| + | |||
| + | <sxh php> | ||
| + | use Symfony\Component\HttpFoundation\Session\SessionInterface; | ||
| + | |||
| + | public function index(SessionInterface $session){ | ||
| + | // store an attribute for reuse during a later user request | ||
| + | $session-> | ||
| + | |||
| + | // get the attribute set by another controller in another request | ||
| + | $foobar = $session-> | ||
| + | |||
| + | // use a default value if the attribute doesn' | ||
| + | $filters = $session-> | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Flash messages ==== | ||
| + | |||
| + | Les Flash messages permettent de communiquer des notifications à l' | ||
| + | |||
| + | Exemple d' | ||
| + | <sxh php> | ||
| + | use Symfony\Component\HttpFoundation\Request; | ||
| + | |||
| + | public function update(Request $request) | ||
| + | { | ||
| + | // ... | ||
| + | |||
| + | if ($form-> | ||
| + | // do some sort of processing | ||
| + | |||
| + | $this-> | ||
| + | ' | ||
| + | 'Your changes were saved!' | ||
| + | ); | ||
| + | // $this-> | ||
| + | |||
| + | return $this-> | ||
| + | } | ||
| + | |||
| + | return $this-> | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | Affichage des flash messages dans un template : | ||
| + | |||
| + | <sxh html> | ||
| + | {# templates/ | ||
| + | |||
| + | {# you can read and display just one flash message type... #} | ||
| + | {% for message in app.flashes(' | ||
| + | <div class=" | ||
| + | {{ message }} | ||
| + | </ | ||
| + | {% endfor %} | ||
| + | |||
| + | {# ...or you can read and display every flash message available #} | ||
| + | {% for label, messages in app.flashes %} | ||
| + | {% for message in messages %} | ||
| + | <div class=" | ||
| + | {{ message }} | ||
| + | </ | ||
| + | {% endfor %} | ||
| + | {% endfor %} | ||
| </ | </ | ||