Kohana 3 : Template commun aux contrôleurs
Lorsqu’on écrit un contrôleur dans Kohana 3, on y associe un template en faisant :
class Controller_Users extends Controller_Template {
public $template = "templates/default";
public function action_index()
{
...
$this->template->content = "message";
...
}
...
Si l’on met en place un second contrôleur, on devra répéter le même scénario. Mais cela devient répétitif surtout si c’est le même template qui est utilisé. Pour factoriser tout ça, on commente ou en enlève la ligne suivante :
public $template = "templates/default";
On crée le fichier classes/controller/site.php (qui est finalement l’équivalent de MY_Controller qu’on connait dans Kohana 2.3.4) et on écrit dedans :
<?php defined('SYSPATH') or die('No direct script access.');
class Controller_Site extends Kohana_Controller_Template {
public $template = "templates/default";
public function before()
{
parent::before();
// Configurations : Session, Auth ou autres
...
}
}
Dans ce contrôleur nouvellement créé, la fonction before() permet de faire des opérations de configuration avant qu’un quelconque contrôleur ne soit appelé. Profitez-en pour initialiser la session ou les cookies.
Et on n’oublie pas de rediriger les nouveaux contrôleurs vers ce contrôleur parent en ajoutant :
class Controller_Nouveau extends Controller_Site {
Ni de créer le template default.php dans views/templates/ !