Alors tu auras bien dans ta classe Evaluation les deux méthodes. Tu pourras les appeler de cette manière :
$evaluation->calculEffectif() Un conseil : Dans la classe Evaluation, tu n'y mets que la logique et dans la classe EvaluationTable la récupération des données (autrement dit la requête). Est-ce que tes thèmes sont aussi des objets ? -----Message d'origine----- De : [email protected] [mailto:[email protected]] De la part de manuel brossard Envoyé : mardi 23 novembre 2010 15:05 À : [email protected] Objet : Re: [symfony-fr] appel d' une fonction d' une même classe ok, tout d" abord merci pour votre aide... alors voici de quoi il retourne.. Compter le nombre de notes par obtenu par thème. J' ai une évaluation (formulaire) comportant 6 thèmes avec une note de 1 a 5 par thème. Cette même évaluation peut être soumise entre 1 et N fois. Mes deux fonctions ont le role suivant : 1)calculeffectif() calcul pour chaque thême le nombre de fois que l' évalué à obtenu 1, 2, 3, 4 et 5. 2)totaleffectif() Renvoi le nombre total de note par thême et obtenu pour un client.. (la somme des effectifs de chaque thème..) Attention ! On ne parle donc pas ici de valeur mais d' effectif... Le 23 novembre 2010 14:49, Lélio ML <[email protected]> a écrit : Je pense que le problème n'est pas de lancer la méthode mais de savoir qui en a la responsabilité. Pour répondre à cette question, il faut se pencher sur un diagramme de classes et surtout sur la programmation Objet. Symfony est un superbe framework. Mais pour avoir des applications qui tiennent la route et qui supporteront les évolutions à venir, il faut également faire une analyse et une conception de qualité. Pour cela, il faut savoir répartir les responsabilités entre les classes. Manuel, pourrais-tu nous dire en langage naturel ce que ton action est censée faire ? Et sur quoi portent les effectifs ? Je pense que la simple réponse à cette dernière réponse apportera la solution. -----Message d'origine----- De : [email protected] [mailto:[email protected]] De la part de Stéphane Envoyé : mardi 23 novembre 2010 14:20 À : [email protected] Objet : Re: [symfony-fr] appel d' une fonction d' une même classe Pas con :) Before Printing, Think about Your Environmental Responsibility! Avant d'Imprimer, Pensez à Votre Responsabilitée Environnementale! 2010/11/23 Lélio ML <[email protected]> Et pourquoi ne pas faire porter le calcul par ta classe Evaluation. C'est elle qui porte a priori le calcul de l'effectif... Mais peut-être est-ce une autre classe de ton modèle. Et peut-être également que ce calcul doit être placé sous la responsabilité d'une des classe *Table. -----Message d'origine----- De : [email protected] [mailto:[email protected]] De la part de manuel brossard Envoyé : mardi 23 novembre 2010 13:45 À : [email protected] Objet : Re: [symfony-fr] appel d' une fonction d' une même classe OK je demande que cela.. Comment crée tu une classe manuellement ? Comment la rendre accessible depuis mon controleur courant. Merci, tu m' aides bcp la que la plupart des doc que je lis depuis 3 semaines... Le 23 novembre 2010 13:41, Stéphane <[email protected]> a écrit : Non effectivement il n'aime pas. Si tu veux laisser la function calculeffectif dans l'action, tu dois faire, dans executeBLABLA: $this->calculeur = $this; Ainsi dans ton template tu auras accès à l'objet blablaActions, et donc à sa fonction calculeffectif. L'autre solution est de déporter le code de calcul dans une classe métier qui n'a que ça à faire (ainsi tu sépares ton code, et c'est mieux : imagines que tu aies besoin d'appeler cette fonction au par ailleurs : tu ne pourras pas car tu devras instancier l'action -ce qui n'est pas ton boulot, mais celui du framework). Donc je te conseil vivement de créer une nouvelle classe "calculeurEffectifs", d'y mettre tes fonctions de calculs, et dans ton executeBLABLA de faire ceci: $this->calculeur = new calculeurEffectifs(); Après dans ton template tu pourras faire <?php echo $calculeur->calculeffectif(...);?> Before Printing, Think about Your Environmental Responsibility! Avant d'Imprimer, Pensez à Votre Responsabilitée Environnementale! 2010/11/23 manuel brossard <[email protected]> Je suis dans la classe consultantActions (actions.class.php) donc il faut que je fasse un $this->calculeurEffectif = new consultantActions (); ? je crois que j' ai déja essayé il aime pas trop car il essai de contruire une nouvelle fois la classe consultantActions . Le 23 novembre 2010 13:27, Stéphane <[email protected]> a écrit : Ah. Bah fait ceci alors, dans ton executeBLABLA: $this->calculeurEffectif = new taClasseDeCalcul(); Ainsi tu pourras l'utiliser dans ton template <?php echo $calculeurEffectif->calculblabla(...);?> Tu peux aussi créer un Helper approprié et créer des fonctions appropriés selon tes besoins. Par exemple tu pourrais faire une classe singleton qui serait utilisée au travers de tes helpers. Ceci dit les helpers c'est bien pour la logique d'affichage, pas pour gérer de la logique métier, donc je préfère utiliser la première méthode donnée ci dessus. Before Printing, Think about Your Environmental Responsibility! Avant d'Imprimer, Pensez à Votre Responsabilitée Environnementale! 2010/11/23 manuel brossard <[email protected]> Oui, justement je passe des paramètres différents en fonction du template et surtout de leur emplacement. Ainsi pour la première ligne j' appel ma fonction avec calculeffectif(1, $effectif, $id ); Pour la seconde calculeffectif(2, $effectif, $id ); etc.. Je parcours donc plusieurs fois mon tableau de résultat pour en extraire les valeurs des colonnes souhaités dans mon template. Merci de ton aide. Les tutos jobeet sont pas mal.. mais ya pas bcp d' info sur ces cas.. la malheuresement.. moins bateau que je mets les cubes dans les cubes ou l' explication est presque évidente.. trop surement , mais c' est déja pas mal quand un on se fait au mvc je reconnais.. Le total est fonction d' une ligne d' un tableau.. Le 23 novembre 2010 13:04, Stéphane <[email protected]> a écrit : Aaah ok tu appels ces fonctions dans le template au lieu de les appeler dans l'action ! On le voit car l'erreur stipule que tu appel ->calculeffectif sur un objet de la classe sfPHPView ! Il faut que tu appels cette fonction dans le executeShowevaluation par exemple : public function executeShowevaluation (sfWebRequest $request) { $this->id = $request->getParameter('id'); $this->name = Doctrine_Core::getTable(' Customer')->getFirstName($this->id); $this->evaluation = Doctrine_Core::getTable('Evaluation')->getEvaluationbycustomer($this->id); $this->total = $this->calculeffectif(....); } Ainsi dans ton template, tu auras accès la variable $total : <?php echo $total?> Je te conseil vivement de lire les tutoriaux (vraiment bien faits) de symfony (genre Jobeet) Before Printing, Think about Your Environmental Responsibility! Avant d'Imprimer, Pensez à Votre Responsabilitée Environnementale! 2010/11/23 manuel brossard <[email protected]> Quel objet ? Voici la classe complète, mes 3 premières fonctions renvoi bien le résultat attendu dans mes templates.. class consultantActions extends autoConsultantActions { public function executeShow (sfWebRequest $request) { $this->id = $this->getUser()->getGuardUser()->getId(); $this->customers = Doctrine_Core::getTable('Customer')->getMycustomer($this->id); } public function executeShowevaluation (sfWebRequest $request) { $this->id = $request->getParameter('id'); $this->name = Doctrine_Core::getTable('Customer')->getFirstName($this->id); $this->evaluation = Doctrine_Core::getTable('Evaluation')->getEvaluationbycustomer($this->id); } public function calculeffectif ($effectif, $theme, $customer) { $array = $this->evaluation = Doctrine_Core::getTable('Evaluation')->getEvaluationbycustomer($customer); $j=0; foreach ($array as $i => $value) { if ( $array[$i]['score'.$theme] == $effectif) { $j++; } } return $j; } Le 23 novembre 2010 12:44, Stéphane <[email protected]> a écrit : D'acc, le code de la classe entière c'est possible ? et le code d'utilisation de l'objet ? Sinon on ne peut pas vraiment aider... Tu le comprends sûrement ! Before Printing, Think about Your Environmental Responsibility! Avant d'Imprimer, Pensez à Votre Responsabilitée Environnementale! 2010/11/23 manuel brossard <[email protected]> Le voici... public function totaleffectifbytheme ( $theme, $customer) { $this->calculeffectif(1, $theme, $customer); $this->calculeffectif(2, $theme, $customer); $this->calculeffectif(3, $theme, $customer); $this->calculeffectif(4, $theme, $customer); $this->calculeffectif(5, $theme, $customer); $this->efftotal= $this->eff1 + $this->eff2 + $this->eff3 + $this->eff4 + $this->eff5 ; return $this->efftotal; } Le 23 novembre 2010 12:32, Stéphane <[email protected]> a écrit : Le coooooode :) pastebin est ton ami pour poster du code sur le net :) Before Printing, Think about Your Environmental Responsibility! Avant d'Imprimer, Pensez à Votre Responsabilitée Environnementale! 2010/11/23 manuel brossard <[email protected]> Oui j' ai essayé cela mais cela ne change rien.. Le 23 novembre 2010 12:28, Stéphane <[email protected]> a écrit : Si tu pouvais nous montrer le code, ça aiderait ! Tu utilises bien $this->NOMDELAFONCTION ? Je demande ça parce qu'au vu du code : $calcul3=FonctionCalculBase($p1, $p2, $p3) on dirait que non $calcul3= $this->FonctioncalculBase(...); ? Before Printing, Think about Your Environmental Responsibility! Avant d'Imprimer, Pensez à Votre Responsabilitée Environnementale! 2010/11/23 mantex <[email protected]> Bonjour à tous, Je développe mon premier projet sous symfony et je rencontre pas mal de difficulté pour trouver ou mettre mon code voir quel fonction utilisé pour faire des choses simples. Par exemple .. Dans une classe evaluation.action J' ai 2 fonctions.. Une qui effectue un calcul et une autre qui est cencé faire la sommes des valeurs retourné par la première. Exemple shématisé : FonctionCalculBase($p1, $p2, $p3) { .... } FonctionSomme ($p1, $p2) { $p3='valeur'; $calcul1=FonctionCalculBase($p1, $p2, $p3) $calcul2=FonctionCalculBase($p1, $p2, $p3) $calcul3=FonctionCalculBase($p1, $p2, $p3) return $somme= calcul1 + calcul2 + calcul3; } J' obtiens un erreur à l' appel des mes foncions FonctionCalculBase() dans le FonctionSomme. Une idée ? ' -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > > . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > > . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Cordialement, Manuel Brossard Twitter: twitter.com/infonel Skype : mantex2039 Tel: + 33 9 72 17 00 41 -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > > . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > > . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Cordialement, Manuel Brossard Twitter: twitter.com/infonel Skype : mantex2039 Tel: + 33 9 72 17 00 41 -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > > . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > > . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Cordialement, Manuel Brossard Twitter: twitter.com/infonel Skype : mantex2039 Tel: + 33 9 72 17 00 41 -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > > . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > > . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Cordialement, Manuel Brossard Twitter: twitter.com/infonel Skype : mantex2039 Tel: + 33 9 72 17 00 41 -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > > . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > > . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Cordialement, Manuel Brossard Twitter: twitter.com/infonel Skype : mantex2039 Tel: + 33 9 72 17 00 41 -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > > . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > > . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Cordialement, Manuel Brossard Twitter: twitter.com/infonel Skype : mantex2039 Tel: + 33 9 72 17 00 41 -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> <mailto:symfony-fr%[email protected] <mailto:symfony-fr%[email protected]> > . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected] <mailto:symfony-fr%[email protected]> . Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Cordialement, Manuel Brossard Twitter: twitter.com/infonel Skype : mantex2039 Tel: + 33 9 72 17 00 41 -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected]. Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr -- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Symfony-fr. Pour envoyer un message à ce groupe, adressez un e-mail à [email protected]. Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected]. Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/symfony-fr?hl=fr
