Welcome, Guest
Username: Password: Remember me
  • Page:
  • 1

TOPIC:

Champs calculés 23 Jan 2014 14:18 #12093

Bonjour,

Y a-t-il une possibilité d'utiliser des champs calculés ?

Dans mon cas, je voudrais un champ "catégorie" dont le contenu serait défini à partir du calcul de la différence entre la date du jour et la date présente dans un champ "date de naissance".

À défaut, serait-il possible de faire ce calcul à l'affichage de la vue (sans stockage du résultat) ?

Merci pour vos conseils

Gilles

Please Log in or Create an account to join the conversation.

Champs calculés 25 Jan 2014 11:17 #12100

  • admin
  • admin's Avatar
  • Offline
  • Administrator
  • Administrator
  • Chef
  • Posts: 3711
  • Thank you received: 986
Si le calcul est plutôt simple, moi je le réaliserais dans la vue. (view.html.php)

Si c'est plus compliqué et surtout si le calcul peut être demandé par d'autres vues => Model

Dans le model, c'est le plus propre.
if faut utiliser la fonction populateObjects() soit du model list ou du model item. Cela dépend du contexte.

Ensuite, il à l'intérieur de cette fonction, réalise le calcul et enregistre le ou les résultats dans des variables de l'objet ou de la liste. ($item ou $items)
Ce calcul devra être effectué seulement si l'appelant le demande. Tu utilise donc une variable d'état du model. Ce qui donne en algorithme :

SI (model->getState('calculer.le.resultat'))
{
// Stocke dans l'objet, mais pas dans la base de données.
$item->_monResultat1 = monCalcul();
}

La structure de la fonction populateObjects() se trouve dans la super classe (dossier classes)

Voilà. C'est juste pour donner une piste. J'espère que cela t'aidera à comprendre le concept.
Coding is now a piece of cake

Please Log in or Create an account to join the conversation.

Champs calculés 25 Jan 2014 11:21 #12101

  • admin
  • admin's Avatar
  • Offline
  • Administrator
  • Administrator
  • Chef
  • Posts: 3711
  • Thank you received: 986
// Et dans l'appelant, AVANT d'appeller getItem() ou getItems() :
model->setState('calculer.le.resultat', true)

// ensuite :
$item = model->getItem()

// Pour tester
echo $item->_monResultat1
Coding is now a piece of cake

Please Log in or Create an account to join the conversation.

Champs calculés 28 Jan 2014 14:51 #12112

admin wrote: Si le calcul est plutôt simple, moi je le réaliserais dans la vue. (view.html.php)
Si c'est plus compliqué et surtout si le calcul peut être demandé par d'autres vues => Model
Dans le model, c'est le plus propre.

Il faut donc aller modifier le fichier "model" après avoir générer le composant ?

il faut utiliser la fonction populateObjects() soit du model list ou du model item. Cela dépend du contexte.
Ensuite, il à l'intérieur de cette fonction, réalise le calcul et enregistre le ou les résultats dans des variables de l'objet ou de la liste. ($item ou $items)

Où puis-je trouver de la doc pour comprendre cela ?

Ce calcul devra être effectué seulement si l'appelant le demande. Tu utilise donc une variable d'état du model. Ce qui donne en algorithme :

SI (model->getState('calculer.le.resultat'))
{
// Stocke dans l'objet, mais pas dans la base de données.
$item->_monResultat1 = monCalcul();
}

La structure de la fonction populateObjects() se trouve dans la super classe (dossier classes)

L'objet, c'est le résultat de la requête ?

Voilà. C'est juste pour donner une piste. J'espère que cela t'aidera à comprendre le concept.

Merci pour la réponse, mais elle dépasse ma compréhension de Cook.
Comment puis approfondir mes connaissances (en français) ?

Please Log in or Create an account to join the conversation.

  • Page:
  • 1
Time to create page: 0.061 seconds

The j-cook project is one of the best of its kind and it is nice that we all try to contribute in little ways to make life easy for each other.

vlemos (Forum)  

Get Started