Можно ли передать переменную из родительского шаблона в дочерний шаблон. Например, если бы я хотел поместить повторяющийся HTML-код в отдельный шаблон, который был включен в цикл foreach в его родительском шаблоне
<?php
foreach ($items as $item)
{
echo $this->getChildHtml('item_info');
}
?>
Я хотел бы иметь доступ к переменной $ item в шаблоне item_info.
Благодарность
2 ответа
Я разделил свой шаблон списка продуктов в отдельный файл, чтобы использовать его в нескольких местах.
В родительском шаблоне я делаю что-то вроде:
<?PHP
$this->getChild('product_list_list')->setData('products', $_productCollection);
echo $this->getChildHtml('product_list_list');
?>
В дочернем шаблоне я могу:
<?php foreach ($this->products as $_product): ?>
// display products
<?php endforeach; ?>
Итак, вы должны уметь:
$this->getChild('item_info')->setData('item', $item);
А затем в item_info откройте его как
$this->item
Надеюсь, это сработает для вас. У меня работает на magento 1.3, но кажется довольно фундаментальным, поэтому, вероятно, общим для всех версий.
Я знаю, что это не новый пост, но вот небольшое завершение:
Вы должны вызвать getChildHtml с атрибутом cache в false, например:
$this->getChildHtml('item_info', false);
И тогда он будет работать отлично.
Спасибо Бенлумли
Похожие вопросы
Новые вопросы
xml
XML (Extensible Markup Language) - это формат структурированного документа, определяющий правила кодирования текста. При использовании этого тега включайте дополнительные теги, такие как язык программирования, наборы инструментов, используемые технологии XML и другие теги, описывающие среду, в которой опубликована проблема. Гибкость XML обеспечивает широкий спектр применений для передачи человеческих и машинных данных, в том числе конкретных инструментов и библиотек.