Как загрузить данные в файл просмотра в magento?

#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

http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-4-magento-layouts-blocks-and-templates

Ответ №2:

Вы могли бы сделать это с контроллера, но это намного проще и гораздо больше соответствует рекомендациям Magento по передаче данных в шаблоны с помощью блоков.

Чтобы выяснить, какой шаблон и блок визуализируется, перейдите к System > Configuration > Advanced > Developer > Debug и включите подсказки пути к шаблону (с именами блоков). Теперь, когда вы загружаете интерфейс, вы увидите красные границы вокруг частей страницы, которые иллюстрируют, какой блок и комбинация шаблонов загружает различные части веб-страницы.

Свойства и методы блочного объекта автоматически становятся доступными для шаблона, отображаемого этим блоком.

Чтобы сделать эти данные доступными в вашем шаблоне, просто добавьте метод в блок, который отображает шаблон, затем вызовите этот метод из вашего шаблона.

В качестве ярлыка вы также можете просто вызвать $collection_data = Mage::getModel('web/web')->getCollection()->getData(); непосредственно внутри вашего шаблона.

Для получения дополнительной информации см. Magento для разработчиков: Часть 4 — Макеты, блоки и шаблоны Magento.