Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 18-03-2009 23:25:09

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

[Résolu] Où mettre le code html : Helper et Model (classe métier)

Bonsoir,

Décidément j'ai pleins de questions avec ce Zend. Heureusement qu'il existe cette communauté...

Ma question est la suivante.

Dans un projet en MVC, on a vu qu'il existait des classes qui permettait "d'assister" le rendu html, zend_form par exemple : on créer une classe modèle qui hérite de zend form, on le construit dans le controlleur et on le recupère dans la vue.

Ma question est maintenant : si je souhaite créer un objet qui hérite de rien. Par exemple je souhaite faire un calendrier annuel (pour pouvoir faire ensuite un tas de trucs). Je n'ai pas vu de classe qui permettait de faire ce genre de chose, et puis même si c'était le cas, je souhaiterais le faire moi même au moins pour m'exercer.

Comment je dois procéder alors ? Je vais créer un modèle "MonCalendrier" dans la couche métier, mais comment je peux affecter du code html à mon objet pourqu'il soit ensuite interprété par la vue ?

A moins que la méthode mvc indique qu'il faut creer un objet "brute" donc sans code html, et c'est ensuite la vue qui va gérer ? (if je change de mois, alors je fait une nouvelle balise, etc....)

Par ailleurs je suis ouvert a toute ressource expliquant le mécanisme de fabrication de ses propres objets pour qu'ils soient ensuite affichés tels qu'on le soit.

Merci bien pour ces réponses.

Dernière modification par Mr.MoOx (19-03-2009 12:07:48)


Gostbuster - Développeur WEB

Hors ligne

 

#2 19-03-2009 09:09:10

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

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

dans la vue
c'est le propre même de la vue que ge générer du code pour l'affichage

A+JYT

Hors ligne

 

#3 19-03-2009 09:18:52

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

Oui c'est ce que je pensais,

pour aller plus loin, ma question est :

lorsqu'un fait un echo $this->form; dans la vue, qui est-ce qui a généré le code html ? puisque visiblement, il ne semble pas que ce soit la vue (on ne voit pas les balises propres au formulaire dans le fichier .phtml).

Merci en tout cas pour ces réponses qui apportent énormement dans mon apprentissage.


Gostbuster - Développeur WEB

Hors ligne

 

#4 19-03-2009 09:49:37

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

Je pense avoir trouvé ma réponse, il s'agit des helpers qui vont se charger de "générer" l'affichage html du  modèle, non ?


Gostbuster - Développeur WEB

Hors ligne

 

#5 19-03-2009 10:01:50

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

C'est ça smile

Hors ligne

 

#6 19-03-2009 10:19:34

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

Je vois, je vais donc essayer de créer le mien alors.

Mais afin d'éviter toute confusion : s'agit-il d'un viewHelper ou d'un actionHelper.

Je pense qu'il s'agit d'un viewHelper, et que donc le fichier php doit se retrouver dans le dossier
MA RACINE/application/views/helpers/Calendrier.php

et doit contenir une classe Zend_View_Helper_Calendrier

qui contiendra la méthode calendrier

et qui fera un return {mon code html}

Si c'est le cas, tout devient plus clair alors !big_smile


Gostbuster - Développeur WEB

Hors ligne

 

#7 19-03-2009 10:29:23

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

et ben non, ou alors il y a des choses a configurer :


Code:

Object of class Calendrier could not be converted to string

Gostbuster - Développeur WEB

Hors ligne

 

#8 19-03-2009 10:41:01

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

Si si tu es sur la bonne voie. Lis bien la doc wink

Hors ligne

 

#9 19-03-2009 10:55:53

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

En effet si dans ma vue je fais $this->calendrier(), cela fonctionne,
mais pourtant, dans le cas d'un formulaire, je fait dans le controlleur :

Code:

$monForm=new Formulaire(); 
$this->view->form=$monForm;

et dans ma vue :

Code:

echo $this->form;

et ca marche....

je cherche la subtilité

Dernière modification par gostbuster (19-03-2009 10:58:20)


Gostbuster - Développeur WEB

Hors ligne

 

#10 19-03-2009 11:19:21

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

J'ai bien regardé  la classe Zend_Form, et elle hérite de Zend_Form_Element_Xhtml,

J'ai donc fait hérité

/models/Calendrier.php de Zend_Form_Element_Xhtml

et j'ai remis : $this->calendrier dans mon fichier de vue(.phtml),

je n'ai pas d'erreur (c'est déjà ça), mais par contre je ne passe pas par ma méthode calendrier() du helper.

J'ai bien lu la doc, mais ça ne parle pas de la transformation modele->vue avec des helpers...(ou alors j'ai mal lu).

Merci


Gostbuster - Développeur WEB

Hors ligne

 

#11 19-03-2009 11:22:13

keilnoth
Membre
Date d'inscription: 30-08-2008
Messages: 128
Site web

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

Zend_Form_Element_Xhtml c'est très spécifique aux formulaires... essaie Zend_View_Helper_Abstract ou qqch comme ça... wink


Quelques tutoriaux Zend Framework !

Hors ligne

 

#12 19-03-2009 11:25:10

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

Merci de t'impliquer dans ton problème.

En fait, ma classe dans :

monsite/application/view/helpers hérite de Zend_View_Helper_Abstract

et ma classe : Calendrier dans /models hérite...de rien du tout pour l'instant, mais peut etre que c'est là que ca coince....


Gostbuster - Développeur WEB

Hors ligne

 

#13 19-03-2009 11:27:11

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

Déjà si tu veux que la vue utilise un helper, c'est ainsi $this->calendrier()

Le Zend_Form marche comme ca $this->form car ça utilise la méthode magique __toString() qui est appellé sur un objet dès que tu fais une echo de celui ci. Et la méthode toString de zend_form utilise la méthode render, qui elle fait appelle aux helpers.
Relis bien la doc :p

Hors ligne

 

#14 19-03-2009 11:30:45

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

Ton helper n'est qu'une "fonction" tu dois donc lui passé en paramètre ton calendrier
Du coup tu devrais avoir quelque chose du genre "$this->calendrier($this->calendrier)"
Je fais exprès de mettre les mêmes noms pour que tu trouves seul où est la différence!

Hors ligne

 

#15 19-03-2009 11:33:25

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

Ok, je comprend mieux maintenant. Seulement est-ce que $this->calendrier() tient compte de l'instance de calendrier (dans le modèle) ? Théoriquement, je pense que oui (sinon ca aurait pas d'intérêt je pense...)

a moi maintenant de trouver un moyen de récupérer les infos dans calendrier() (les infos du modèle calendrier).

Merci a toi aussi (j'ai remercié keilnoth mais pas toi big_smile)

je cherche....


Gostbuster - Développeur WEB

Hors ligne

 

#16 19-03-2009 11:35:40

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

Je comprends,

Pour te montrer que j'ai compris :

$this->{ma fonction helper qui va retourner le code html } ( mon objet calendrier que j'ai instancié dans le controlleur )

En fait les deux sont disctincts.

Merciiiiiii

(nos messages se sont croisés)


Gostbuster - Développeur WEB

Hors ligne

 

#17 19-03-2009 11:39:16

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

Dernier coup de pouce...

$this->monHelperAfficheurDeCalendrier($this->monObjectCalendrierQueJAiPasseALaVue);

Techniquement parlant ton helper n'est pas dépendant de ton object métier si ce n'est dans la signature

Code:

class Zend_View_Helper_Calendrier {
    public function calendrier(Calendrier $calendar) {
        //...
        return $xhtml;
    }
}

EDIT: bah voilà wink

Hors ligne

 

#18 19-03-2009 11:51:50

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

Oui, tu devais écrire ton message pendant que j'écrivais le mien. En effet, c'est ce que j'ai tout à fait compris.

Merci beaucoup pour ces informations qui m'apportent beaucoup !

;D


Gostbuster - Développeur WEB

Hors ligne

 

#19 19-03-2009 14:32:15

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

Désolé c'est encore moi,

Je m'excuse mais j'ai une question qui me tracasse : on a pas le droit de manipuler des objets dans les helpers ?

exemple :

Code:

function calendrier(Calendrier $calendrier)
    {
        $cal=$calendrier->getTableau();
        
        $xhtml='';
        foreach($cal as $mois)
        {
            $xhtml.="<ul>";
             
            foreach($mois as $jr)
            {
                $xhtml.= "<li>".$jr->getDay()."</li>";
            }

             
            $xhtml.="</ul>";
             
        }
        return $xhtml;
    }

Ca me fait un beau caca (1 janvier 1970 lol)

Je fais des recherches de mon coté, mais ca semble louche cette histoire car je pensais qu'on pouvait manipuler les objets à notre guise.

Pour info, calendrier contient un tableau qui contient plein de Zend_Date (a chaque fois j'ai fait un array_push( avec en paramètre un new Zend_Date(mes parametres))

...merci...


Gostbuster - Développeur WEB

Hors ligne

 

#20 19-03-2009 15:41:49

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: [Résolu] Où mettre le code html : Helper et Model (classe métier)

Mince, je vois que personne ne répond, ca veut peut etre dire que personne ne sait lol.

Théoriquement je pense que oui, on peut utiliser les objets, non ?


Gostbuster - Développeur WEB

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