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]> .
        
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]
<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]
<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]
<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]
<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]
<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

Répondre à