====== La classe SActionController ====== Les contrôleurs vous permettent de définir des actions qui, après avoir rempli leur rôle, font le rendu d'un template ou redirigent vers une autre action. Chaque action est définie par une méthode publique qui sera rendu accessible lors d'une requête par le biais du [[Routing]]. class BlogController extends SActionController { public function index() { $this->posts = Post::$objects->all(); } public function add_comment() { $comment = new Comment($this->params['comment']); $comment->save(); $this->redirect_to(array('action' => 'index')); } } Par défaut, le contrôleur fera le rendu du template portant le même nom que l'action appellée, à moins que vous ne demandiez autre chose. Ainsi, dans l'action ''index'' de l'exemple ci-dessus, le controller fera le rendu du template ''/views/blog/index.php''. Par contre, l'action ''add_comment'' qui n'est là que pour sauver dans la base un commentaire écrit par un visiteur n'a pas de vue associée. Elle effectue donc une redirection vers l'action ''index''. ===== Request ===== Chaque requête faite au serveur est "wrappée" dans un objet ''SRequest''. C'est cet objet qui est chargé notamment de déterminer le contrôleur et l'action demandés, en utilisant pour cela le [[Routing]]. L'instance de l'objet ''SRequest'' est accessible directement dans le controller en tant que propriété (''$this->request''). Tous les paramètres de la requête, qu'ils viennent d'une requête GET ou POST, sont accessibles par le tableau ''$this->params''. Il est possible de construire des tableaux associatifs comme paramètres, en utilisant la notation entre crochets dans les fomulaires :