A free and open-source book on ZF3 for beginners


6.5. Частичные представления

Частичные представления (partial views) - это файлы шаблонов представлений .phtml, которые могут быть визуализированы другим шаблоном представления. Частичные представления позволяют собирать вашу страницу по частям и повторно использовать детали алгоритма визуализации представления в различных шаблонах представления.

В качестве примера использования частичных представлений, представьте, что нам нужно отобразить таблицу некоторых продуктов. У каждого продукта есть ID, название и цена. Мы можем использовать шаблон частичного представления для отображения одной строки таблицы несколько раз.

Для начала добавим метод partialDemoAction() контроллеру Index:

// Действие, демонстрирующее использование частичных представлений.
public function partialDemoAction() 
{
    $products = [
        [
            'id' => 1,
            'name' => 'Digital Camera',
            'price' => 99.95,
        ],
        [
            'id' => 2,
            'name' => 'Tripod',
            'price' => 29.95,
        ],
        [
            'id' => 3,
            'name' => 'Camera Case',
            'price' => 2.99,
        ],
        [
            'id' => 4,
            'name' => 'Batteries',
            'price' => 39.99,
        ],
        [
            'id' => 5,
            'name' => 'Charger',
            'price' => 29.99,
        ],
    ];
	
    return new ViewModel(['products' => $products]);
}

Этот метод действия просто подготавливает массив продуктов для отображения и передает его шаблону представления с помощью контейнера для переменных ViewModel.

Затем добавим файл шаблона partial-demo.phtml:

<?php
$this->headTitle('Partial View Demo');
?>

<h1>Partial View Demo</h1>
<p>
    Ниже представлена таблица продуктов. Она была визуализирована с помощью
	частичных представлений.
</p>
<table class="table table-striped table-hover">
    <tr>
        <th>ID</th>
        <th>Product</th>
        <th>Price</th>
    </tr>

    <?php 
        foreach ($this->products as $product) {
            echo $this->partial('application/index/table-row', ['product'=>$product]);
        }    
    ?>    
</table>

В представленном выше шаблоне представления мы определяем разметку таблицы продуктов (строки 10-22). В строке 18 мы проходим по элементам массива продуктов и отображаем каждую строку с помощью помощника вида Partial.

Первый аргумент помощника вида Partial - это имя файла шаблона частичного представления ("application/index/table-row").

Второй аргумент - массив аргументов, передаваемых шаблону представления. К ним можно будет обращаться так же, как если бы вы передавали их с помощью контейнера для переменных ViewModel.

Наконец, создадим шаблон представления table-row.phtml, который будет использоваться как шаблон частичного представления:

<tr>
  <td> <?= $this->product['id'] ?> </td>
  <td> <?= $this->product['name'] ?> </td>
  <td> <?= $this->product['price'] ?> </td>
</tr>

В этом шаблоне представления мы визуализируем одну строку таблицы.

Чтобы увидеть получившуюся веб-страницу, наберите URL "http://localhost/application/partial-demo" в адресной строке своего браузера. Вы увидите что-то наподобие рисунка 6.5.

Рисунок 6.5. Строки таблицы отображены с помощью частичных представлений Рисунок 6.5. Строки таблицы отображены с помощью частичных представлений


Top