Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-11-2008 10:34:20

Kaimite
Membre
Lieu: Marseille
Date d'inscription: 16-06-2008
Messages: 144
Site web

qui fait quoi... je suis un p'tit peu perdu

Salut,

Je pensais avoir saisi le principe du MVC mais je suis un p'tit peu perdu alors je demande quelques lumières ici smile

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 :

Code:

$listeArticles = $Model -> renvoyerArticlesDe($rubriques_uid);

et dans mon model :

Code:

<?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 :

Code:

function enregistrerAction () {        
    $Model = new Article();
    $Model -> enregistrerArticle ($_POST);
    return;
}

En dans mon model :

Code:

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 smile

Bon w-e.

Cordialement,
Kaimite

Hors ligne

 

#2 22-11-2008 11:43:50

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: qui fait quoi... je suis un p'tit peu perdu

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

 

#3 22-11-2008 16:23:56

Kaimite
Membre
Lieu: Marseille
Date d'inscription: 16-06-2008
Messages: 144
Site web

Re: qui fait quoi... je suis un p'tit peu perdu

Merci pour ta réponse.

Je vais continuer l'esprit tranquille smile

Bon w-e

Kaimite

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages