Dans mon composant personnalisé, je suis actuellement coincé avec la façon dont Joomla gère les propriétés personnalisées du modèle. Disons que j'ai un modèle Property
. Pour savoir si ce Property
est vendu, je dois exécuter une requête sur plusieurs colonnes. Il y a date_sold, mais il y a aussi acheteur. Les deux champs doivent être vérifiés avant de pouvoir dire que la propriété est vendue.
À mon avis, je peux faire if ($property->date_sold ... && $property->buyer ...)
, mais existe-t-il un moyen de dire if ($property->is_sold)
?
J'ai essayé dans mon view.html.php
:
$this->is_sold = 0;
if (!is_null($this->property->buyer) && $this->property->date_sold) {
$this->is_sold = 1;
}
Mais ça ne marche pas. Étrangement, var_dump génère null, mais print_r génère 1.
Le seul moyen que j'ai trouvé de faire cela est dans le modèle (default.php
). Qu'est-ce que je rate?
Vous pouvez modifier un objet Table (habituellement dans /administrator/com_yourcomponent/tables/property.php
) De cette propriété pour définir la propriété is_sold
Dans la méthode load
juste après parent::load()
.
Une autre méthode consiste à modifier le modèle (/components/com_yourcomponent/models/property.php
). Vous modifiez la méthode getItem()
en ajoutant un code de vérification approprié après parent::getItem()
.
Vous pouvez également le faire dans votre view.html.php
, Mais sans code complet, il est difficile de vous donner une réponse claire à la question de savoir pourquoi ce que vous avez écrit ne fonctionne pas. Un conseil, si vous voulez vérifier si l’article a été vendu, il est préférable de vérifier si la date a été réglée comme ceci !empty($this->property->date_sold)
ou en vérifiant s’il ne s’agit pas d’une date nulle.