#php #magento
#php #magento
Вопрос:
Я только начал изучать magento.У меня есть список данных в контроллере. Я хочу показать этот список в моем файле просмотра. Как я могу это сделать? Вот моя категория действий контроллера. Откуда я получаю массив данных.
<?php
class Company_Web_IndexController extends Mage_Core_Controller_Front_Action
{
public function indexAction()
{
$this->loadLayout();
$this->renderLayout();
}
public function addcategoryAction()
{
if ($this->getRequest()->isPost())
{
$data = $this->getRequest()->getParams();
$catName = $data['catName'];
$status = $data['status'];
$data = array('name'=>$catName,'status'=>$status);
$model = Mage::getModel('web/web')->setData($data);
try {
$insertId = $model->save()->getId();
$this->_redirect('web/index/category');
} catch (Exception $e){
echo $e->getMessage();
}
}
$this->loadLayout();
$this->renderLayout();
}
public function categoryAction()
{
$collection = Mage::getModel('web/web')->getCollection()->getData();
$this->loadLayout();
$this->renderLayout();
}
}
?>
Ответ №1:
Magento работает с типом блока, т. е. там, где вы упомянули свой phtml-файл, для отображения содержимого для категории action, т.е
<web_index_category>
<reference name="content">
<block type="core/template" name="category.block" template="customfile.phtml" />
</reference>
</web_index_category>
для типа блока вы можете изменить свой пользовательский тип
т.е. type=»web / category»
и создать один блок
Company_Web_Block_Category extends Mage_Core_Block_Template
внутри этого создайте функцию и верните свою коллекцию
т. е.
public function getCollection()
{
return Mage::getModel('web/web')->getCollection()->getData();
}
В вашем phtnl получите доступ к этой функции с помощью,
$this->getCollection()
Проверьте здесь для получения дополнительной информации
http://www.gravitywell.co.uk/blog/post/how-to-creating-your-own-custom-block-in-magento
Ответ №2:
Вы могли бы сделать это с контроллера, но это намного проще и гораздо больше соответствует рекомендациям Magento по передаче данных в шаблоны с помощью блоков.
Чтобы выяснить, какой шаблон и блок визуализируется, перейдите к System > Configuration > Advanced > Developer > Debug
и включите подсказки пути к шаблону (с именами блоков). Теперь, когда вы загружаете интерфейс, вы увидите красные границы вокруг частей страницы, которые иллюстрируют, какой блок и комбинация шаблонов загружает различные части веб-страницы.
Свойства и методы блочного объекта автоматически становятся доступными для шаблона, отображаемого этим блоком.
Чтобы сделать эти данные доступными в вашем шаблоне, просто добавьте метод в блок, который отображает шаблон, затем вызовите этот метод из вашего шаблона.
В качестве ярлыка вы также можете просто вызвать $collection_data = Mage::getModel('web/web')->getCollection()->getData();
непосредственно внутри вашего шаблона.
Для получения дополнительной информации см. Magento для разработчиков: Часть 4 — Макеты, блоки и шаблоны Magento.