2014-07-07 258 views
0

我開始學習Magento.I創建自定義模塊。我有控制器在該行動中獲取數據的數組。但是當我試圖在Block文件中獲得相同的collecion時。我沒有收藏。
我是否需要創建資源文件夾才能在Block中獲取數據?我已經在Model中創建了Mysql4文件夾。資源的真正用途是什麼?如何創建資源?
我的命名空間是公司與我的模塊名稱是網絡
這裏是我的阻止文件名 - Web.php什麼是資源在magento

<?php 
class Company_Web_Block_Webdata extends Mage_Core_Block_Template 
{ 
    public function getCategoryData() 
    { 
     return Mage::getModel('web/web')->getCollection()->getData(); 
    } 
} 


?> 

我的config.xml

<?xml version="1.0" ?> 
<config> 
    <modules> 
     <Company_Web> 
      <version>1.6.0.0.2</version> 
     </Company_Web> 
    </modules> 
    <frontend> 
     <routers> 
      <web> 
       <use>standard</use> 
       <args> 
        <module>Company_Web</module> 
        <frontName>web</frontName> 
       </args> 
      </web> 
     </routers> 
     <layout> 
      <updates> 
       <web> 
        <file>web.xml</file> 
       </web> 
      </updates> 
     </layout> 
    </frontend> 

    <global> 
     <models> 
       <!--<web> 
         <class>Company_Web_Model</class> 
         <resourceModel>web_mysql4</resourceModel>   
       </web> 
       <web_mysql4> 
        <class>Company_Web_Model_Mysql4</class> 
        <entities> 
         <web> 
          <table>category</table> 
         </web> 
        </entities>     
       </web_mysql4>--> 
       <web> 
        <class>Company_Web_Model</class> 
        <resourceModel>web_resource</resourceModel>   
       </web> 
       <web_resource> 
        <class>Company_Web_Model_Resource</class> 
        <entities> 
         <web> 
          <table>category</table> 
         </web> 
        </entities>     
       </web_resource> 
     </models> 
     <resources> 
      <web_setup> 
       <setup> 
        <module>Company_Web</module> 
       </setup> 
       <connection> 
        <use>core_setup</use> 
       </connection> 
      </web_setup> 
      <web_setup> 
       <connection> 
        <use>core_write</use> 
       </connection> 
      </web_setup> 
      <web_setup> 
       <connection> 
        <use>core_read</use> 
       </connection> 
      </web_setup> 
     </resources> 
     <blocks> 
      <company_web> 
       <class>Company_Web_Block</class> 
      </company_web> 
     </blocks> 
     <!-- 
     <helpers> 
      <company_web> 
       <class>Company_Web_Helper</class> 
      </company_web> 
     </helpers>--> 
    </global> 
</config> 

Web.php文件中的資源文件夾。

<?php 
class Company_Web_Model_Resource_Web extends Mage_Core_Model_Resource_Db_Abstract 
{ 
     protected function _construct() 
     { 
       $this->_init('web/web', 'id'); 
     } 
} 


?> 

Collection.php文件資源/網絡/ collection.php

<?php 
class Company_Web_Model_Resource_Web_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract 
{ 
     protected function _construct() 
     { 
       $this->_init('web/web'); 
     } 
} 

?> 

IndexController.php

<?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() 
    { 
     $this->loadLayout(); 
     $this->renderLayout(); 
    } 

} 

?> 

佈局/ web.xml中

<?xml version="1.0" ?> 
<layout version="0.1.0"> 
    <web_index_index> 
     <reference name="content"> 
      <block type="core/template" name="web" template="web/web.phtml"></block> 
     </reference> 
    </web_index_index> 

    <web_index_addcategory> 
     <reference name="content"> 
      <block type="core/template" name="web" template="web/addcategory.phtml"></block> 
     </reference> 
    </web_index_addcategory> 

    <web_index_category> 
     <reference name="content"> 
      <block type="core/template" name="category" template="web/category.phtml" /> 
     </reference> 
    </web_index_category> 
</layout> 
+0

塊文件不應Web.php但Webdata.php,Web.php應該是你的模型文件。 – MTM

+0

Thanks.I根據您的意見更改名稱。 – Nikul

+0

現在工作嗎? – MTM

回答

1

如果你想要與數據庫進行交互,您必須使用Resource Mod el,您可以使用load_beforeload,_afterLoad,_afterSave等一些通用功能。即使您的自定義查詢可以在這裏。但要使用資源模型,應該有一個ModelCollection類也聲明。你的情況應該有三個文件如下:

  • 模型文件:網站/型號/ Web.php
  • 資源文件WEB /型號/資源/ Web.php
  • 收集文件:網絡/型號/資源/網絡/ Collection.php

請更新您的config.xml爲models標籤如下:

<models> 
      <web> 
        <class>Company_Web_Model</class> 
        <resourceModel>web_resource</resourceModel>   
      </web> 
      <web_resource> 
       <class>Company_Web_Model_Resource</class> 
       <entities> 
        <web> 
         <table>category</table> 
        </web> 
       </entities>     
      </web_resource> 
    </models> 

請更新您的佈局文件如:

<web_index_category> 
    <reference name="content"> 
     <block type="web/webdata" name="category" template="web/category.phtml" /> 
    </reference> 
</web_index_category> 
+0

我已經創建了該文件。請檢查我的更新。我根據你的意見做了這件事。仍然沒有收到任何數據。 – Nikul

+0

請檢查我的更新回答 – MTM

+0

仍然不適合我。 – Nikul