模块的config.xml
[code lang="xml"]<global> <models>
<etam_blog>
<version>0.1.0</version>
<!-- 此处定义Model类名前缀,在调用Mage::getModel(etam_blog/xxx)时,会组成Etam_Blog_Model_Xxx的类名 -->
<class>Etam_Blog_Model</class>
<!-- Model的资源类型,后面开新标签需定义资源配置详情 -->
<resourceModel>etam_blog_mysql4</resourceModel>
</etam_blog>
<!-- Model资源定义,实际与数据库进行交互行为的类 -->
<etam_blog_mysql4>
<!-- 资源Model类名前缀,在调用getResourceMode(etam_blog/xxx)l时,将组成类名Etam_Blog_Model_Mysql4_Xxx -->
<class>Etam_Blog_Model_Mysql4</class>
<!-- 资源Model实例,实际的数据表名,用于初始化资源Model,如果定义错误,Magento会报Null Connection。示例:在资源Model中调用_init("etam_blog/xxx")时,会尝试寻找此处有无标签为<xxx>的定义,并找到<table>中定义的表与之交互 -->
<entities>
<entity><table>etam_blog_entity</table></entity>
</entities>
</etam_blog_mysql4>
</models>
</global>
[/code]
Model类定义
[code lang="php"]class Etam_Blog_Model_Blog extends Mage_Core_Model_Abstract
protected function _construct()
// 初始化资源类,取得类名Etam_Blog_Model_Mysql4_Blog
$this->_init("etam_blog/blog");
[/code]
资源Model类定义
[code lang="php"]class Etam_Blog_Model_Mysql4_Blog extends Mage_Core_Model_Mysql4_Abstract
protected function _construct()
//取得entity配置,对应到数据表etam_blog_entity
$this->_init("etam_blog/entity", "post_id");
[/code]
Collection集合类定义
[code lang="php"]class Etam_Blog_Model_Mysql4_Blog_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract
protected function _construct()
// 此处初始化Model类
$this->_init("etam_blog/blog");
[/code]
controller中使用Model
[code lang="php"]public function testModelAction()
// 取得URL参数
$params=$this->getRequest()->getParams();
// 从config.xml中查找<etam_blog>,根据配置组合为类名Etam_Blog_Model_Blog
$blog=Mage::getModel("etam_blog/blog");
// 根据参数载入资源,其中自动调用了getResourceModel,根据配置,此处会实例化一个Etam_Blog_Model_Mysql4_Blog对象,成功载入后,可对
$post=$blog->load($params['id']);
echo $post->getTitle();
// Collection的使用,取得所有记录所组成的Etam_Blog_Model_Blog对象数组
$posts=Mage::getModel("etam_blog/blog")->getCollection();
foreach($posts as $p)
echo $p->getContents();
[/code]
没有评论:
发表评论