Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
fr:tutoriels:jelixnews-1.1:crud [2009/03/18 10:15] – édition externe 127.0.0.1 | fr:tutoriels:jelixnews-1.1:crud [2012/04/14 20:36] (Version actuelle) – [Personnaliser le contrôleur CRUD] laurent |
---|
<code xml> | <code xml> |
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> |
<form xmlns="http://jelix.org/ns/forms/1.0"> | <form xmlns="http://jelix.org/ns/forms/1.1"> |
| |
<input ref="sujet" type="string"> | <input ref="sujet" required="true" maxlength="255"> |
<label>sujet</label> | <label>Sujet</label> |
</input> | </input> |
| |
<input ref="texte" type="string"> | <textarea ref="texte" required="true"> |
<label>texte</label> | <label>Texte</label> |
</input> | </textarea> |
| |
<input ref="news_date" type="date"> | <input ref="news_date" required="true" type="date"> |
<label>news_date</label> | <label>News Date</label> |
</input> | </input> |
| |
<submit ref="submit"> | |
<label>Enregistrer</label> | |
</submit> | |
| |
| <submit ref="_submit"> |
| <label>ok</label> |
| </submit> |
</form> | </form> |
</code> | </code> |
<code xml> | <code xml> |
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> |
<form xmlns="http://jelix.org/ns/forms/1.0"> | <form xmlns="http://jelix.org/ns/forms/1.1"> |
| |
<input ref="sujet" type="string" required="true"> | <input ref="sujet" required="true" maxlength="255"> |
<label>Sujet de la news</label> | <label>Sujet de la news</label> |
</input> | </input> |
| |
<input ref="texte" type="string" required="true"> | <textarea ref="texte" required="true"> |
<label>Contenu</label> | <label>Contenu</label> |
</input> | </textarea> |
| |
<input ref="news_date" type="date" required="true"> | <input ref="news_date" required="true" type="date"> |
<label>Date</label> | <label>Date</label> |
<hint>Le format de la date est aaaa-mm-jj</hint> | <hint>Le format de la date est aaaa-mm-jj</hint> |
</input> | </input> |
| |
<submit ref="submit"> | |
<label>Enregistrer</label> | |
</submit> | |
| |
| <submit ref="_submit"> |
| <label>ok</label> |
| </submit> |
</form> | </form> |
| |
</code> | </code> |
| |
===== Création du contrôleur CRUD ===== | ===== Création du contrôleur CRUD ===== |
| |
Créons le fichier modules/news/controllers/admin.classic.php, et commençons à y écrire un contrôleur pour faire une gestion de news : | Créons le fichier @@F@modules/news/controllers/admin.classic.php@@, et commençons à y écrire un contrôleur pour faire une gestion de news : |
| |
<code php> | <code php> |
</code> | </code> |
| |
Le contrôleur n'hérite pas de jController, mais de jControllerDaoCrud. C'est un contrôleur qui contient un ensemble d'actions prédéfinies. Il suffit alors de compléter certaines informations dans ses propriétés pour que la gestion des news soit opérationnelle. | Le contrôleur n'hérite pas de @@C@jController@@, mais de @@C@jControllerDaoCrud@@. C'est un contrôleur qui contient un ensemble d'actions prédéfinies. Il suffit alors de compléter certaines informations dans ses propriétés pour que la gestion des news soit opérationnelle. |
| |
En principe, dans un premier temps, indiquer le dao et le formulaire à utiliser suffit : | En principe, dans un premier temps, indiquer le dao et le formulaire à utiliser suffit : |
</code> | </code> |
| |
Lancez maintenant dans votre navigateur : http://localhost/jelix/actu.org/www/index.php?module=news&action=admin:index | Lancez maintenant dans votre navigateur : http://localhost/jelix/actu.org/www/index.php/news/admin/. Vous devriez obtenir une liste de news avec des liens pour les voir, un lien pour créer un nouvel enregistrement etc.. Bref, une véritable gestion opérationnelle des news. |
| |
Vous devriez obtenir... une page blanche ! | ===== Personnaliser le contrôleur CRUD ===== |
| |
En effet, le controlleur CRUD s'attend à ce que la réponse HTML qu'il récupère est un objet déjà préparé par l'application, et disponible pour toutes les actions (comme il est indiqué sur la [[fr:manuel-1.0:traitements_communs|page de la personnalisation des réponses communes]]). Mais nous n'avons pas vu ça encore dans le tutoriel, il faut donc redéfinir une méthode du contrôleur pour préparer la réponse HTML. | Si on veut changer des propriétés de la réponse HTML par défaut, qui, dans notre cas, est la classe @@C@myHtmlResponse@@, il faut redéfinir la méthode @@M@_getResponse@@, spécifique à @@C@jControllerDaoCrud@@. On va ici indiquer un titre de page. |
| |
Il s'agit de la méthode _getResponse, spécifique à jControllerDaoCrud. On va donc préparer un objet jResponseHTML en indiquant un titre de page, un template pour le body... | |
| |
<code php> | <code php> |
protected function _getResponse(){ | protected function _getResponse(){ |
$rep = $this->getResponse('html'); | $rep = $this->getResponse('html'); |
$rep->title = "gestion des news"; | $rep->title = "Gestion des news"; |
$rep->bodyTpl = "admin_news"; | |
return $rep; | return $rep; |
} | } |
</code> | </code> |
| |
Il ne faut pas oublier de créer le template que l'on vient d'indiquer, modules/news/templates/admin_news.tpl : | On peut aussi redéfinir les templates pour chaque page du contrôleur CRUD. Par défaut, le contrôleur CRUD utilise ceux fourni par le module jelix. Par exemple, créons un template pour la liste des news. Recopions le template @@F@lib/jelix/core-modules/jelix/templates/crud_list.tpl@@ dans @@F@actu.org/modules/news/templates@@ et changeons par exemple le titre en @@E@<h1>@@: |
| |
<code html> | <code html> |
<h1>Gestion des news</h1> | <h1>Gestion des news</h1> |
| ... |
| </code> |
| |
{$MAIN} | On va ensuite indiquer ce template au contrôleur: |
| |
<hr /> | <code php> |
<div><a href="{jurl 'news~default:index'}">Retour à l'accueil</a></div> | <?php |
| |
| class adminCtrl extends jControllerDaoCrud { |
| |
| protected $dao = 'news~news'; |
| protected $form = 'news~newsform'; |
| |
| protected $listTemplate = 'news~crud_list'; |
| ... |
| } |
| ?> |
</code> | </code> |
| |
Maintenant vous pouvez relancer http://localhost/jelix/actu.org/www/index.php?module=news&action=admin:index, et vous devriez voir la liste des news, avec des liens pour les modifier, les effacer etc... | |
| |
Vous pouvez personnaliser cette affichage, en fournissant les templates propres à l'édition, au listage, en indiquant le nombre d'items par page dans la liste des news etc... | Maintenant vous pouvez relancer http://localhost/jelix/actu.org/www/index.php/news/admin/, et vous devriez voir votre nouveau template. |
| |
| Pour personnaliser encore plus, voir le [[http://docs.jelix.org/fr/manuel-1.1/controleurs/crud|chapitre sur le contrôleur CRUD dans le manuel]]. |
| |
| |
</code> | </code> |
| |
Et ensuite, on peut directement appeler la page correspondante site.com/index.php?module=le_module&action=default:le_nom_de_la_table pour voir le résultat. | Et ensuite, on peut directement appeler la page correspondante site.com/index.php/le_module/default/le_nom_de_la_table pour voir le résultat. |
| |