web-dev-qa-db-fra.com

Comment créer un attribut / une propriété personnalisée sur un modèle?

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?

2
thomas_inckx

Table

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().

Modèle

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().

Vue

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.

1
Artur Stępień