web-dev-qa-db-fra.com

Comment obtenir un objet de catégorie à partir du modèle d'un élément?

C’est plutôt une question PHP mais elle est aussi liée à Joomla. Dans category.php fichier, il y a ces lignes:

    <?php foreach($this->links as $key=>$item): ?>

    <div class="itemContainer">
        <?php
            // Load category_item.php by default
            $this->item = $item;
            echo $this->loadTemplate('item');
        ?>
    </div>

    <?php endforeach; ?>

qui parcourt les éléments d’une catégorie et charge le modèle (category_item.php) pour chacun d'entre eux.

Maintenant dans le category_item.php fichier, je veux obtenir des informations d’un autre élément (par exemple, dans l’item 2, je veux afficher l’image de l’item 3, ça sonne bizarre mais c’est ce que je veux faire). Dans category_item.php, voici comment l’image s’affiche:

<img src="<?php echo $this->item->image; ?>">

le $this _ fait référence à l'élément en cours, ma question est donc, de l'intérieur du category_item.php fichier, est-il possible de se référer à l’objet category? Et y a-t-il un moyen de se référer à d'autres éléments?

1
shenkwen

On a category.php et item.php des dossiers. category.php charger le template en boucle comme:

foreach($this->links as $key => $item) :
    $this->item = $item;
    $this->loadTemplate('item');
endforeach;

Donc dans item.php fichier auquel vous avez accès ou vous devriez avoir $this et toutes les propriétés que vous avez créées dans JView.

Vous voulez accéder à la propriété suivante de loop, il vous suffit donc de passer un $key à item.php

foreach($this->links as $key => $item) :
    $this->item = $item;
    $this->key = $key;
    $this->loadTemplate('item');
endforeach;

Puis dans votre item.php vous pouvez accéder à la valeur suivante de l'item comme ceci:

$this->links[$this->key + 1]->image 

ou autre propriété de next, previous ou what $key tu veux.

1
Lanah