Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Salut,
Je pensais avoir saisi le principe du MVC mais je suis un p'tit peu perdu alors je demande quelques lumières ici
Selon ce que j'ai saisie, la vue afficher des infos, le model se charge de les traiter et, en gros, le controller se charge de demander les infos au model et les passe à la vue...
Jusqu'a présent c'est que que je m'efforce de faire.
Avec ZF nous avons donc un model par table. Dans mon développement c'est ce model qui se charge des actions CRUD.
Pas exemple dans mon controlleur je vais avoir :
$listeArticles = $Model -> renvoyerArticlesDe($rubriques_uid);
et dans mon model :
<?php class Article extends Zend_Db_Table { /** * Le nom de la table * @var string */ protected $_name ="articles"; function renvoyerArticlesDe($rubriques_uid) { $Select = $this -> select() -> from($this -> _name, array("uid", "titre")) -> where("`rubriques_uid` = ?", (int) $rubriques_id) -> where("`afficher` = '1'"); return $this -> fetchAll($Select); } } ?>
De même lorsque je veux sauver un article avec les infos d'un formulaire :
Dans mon contolleur :
function enregistrerAction () { $Model = new Article(); $Model -> enregistrerArticle ($_POST); return; }
En dans mon model :
function enregistrerArticle ($infosArticle) { $DB = Zend_Registry::get("DB"); if ( !empty($infosArticle) ) { //--> TEST INSERT OU UPDATE if ( isset($infosArticle['uid']) AND is_numeric($infosArticle['uid']) ) { $Retour = $infosArticle['uid']; $where = $this -> getAdapter() -> quoteInto('uid = ?', (int) $infosArticle['uid']); $this -> update($infosArticle, $where); } else { $DB -> insert($this -> _name, $infosArticle); $Retour = $DB -> lastInsertId(); } return $Retour; } else { return false; } }
Bien sur les bouts de code sont des exemples rapides.
Les infos sont testées avant d'être insérés dans la table...
Mais voilà,
Je suis en train de lire le bouquin de Julien sur le ZendFramework et dans les exemple j'ai remarqué que les actions d'enregistrement des infos sont faites dans le controleur et non via le model...
Je me dit que je doit donc faire fausse route... Donc ma grande question est la suivante :
Où dois-je faire mes requêtes de CRUD ?
Est-ce que j'ai tout compris à l'envers ou bien puis-je continuer comme ça ?
Voilà, merci de m'éclairer un peu
Bon w-e.
Cordialement,
Kaimite
Hors ligne
non tu ne fais pas fausse route
ZF n'implémente pas MVC mais VC et laisse au développeur le soin de mettre en oeuvre le M
dans de nombreux exemples la couche M n'est pas explicitement définie. est est en conceptuelle et se base sur les objet Zend directement mis en oeuvre par le contrôleur.
le plus souvent c'est le cas d'application n'ai qu'un métier faible c'est à dire très peut de fonctionnalité complexe, pas d'algorithme complexe de calcul. dans ces cas la le métier se résume souvent à de la persistance avec quelque règles (parfois nombreuses)
pour faciliter la mise en oeuvre tout comme dans les doc Zend on fait fit d'une vrai conception métier et on implément la persistance directement.
J'ai le cas dans un application en ce moment que de la lecture et écriture en base quelque règles de cohérence.
J'ai tout de même définis des objet métier qui ne font que de la persistance et un peut de vérif.
j'ai eu précédemment une application au métier fort c'est a dire de l'algorithmique de traitement et un peut de persistance. dans ce cas j'ai défini mon métier en plusieurs couche
une façade pour permettre un accès simple et homogène au métier par les contrôleurs
des objet métier portant le coeur fonctionnel de l'application.
des objets de persistance chargés de conserver les objets métiers en base
des objet d'accès au données portant les spécificité de la base.
A+JYT
Hors ligne