需要学习的下载看:app.tar
回顾上文的具体流程:
URL触发控制器-> 控制器如果有执行布局-> 触发布局type里的Block(块功能)-> 系统实例化Block块类-> 调用Block块里面的类方法(需要在视图里调用方法,所以作者直接用构造方法)-> 类方法里进行SQL写入-> 视图输出
如果要进行所有数据返回到数据集,Magento提供了getCollection()的方法,因此我们需要配置getCollection()的配置项来配置模型集合。
作者的是以blog做为表,在每个模型配置/实例化类中都有指定mymodule/blog;
每个模型都有一个“protected”属性“_resourceCollectionName”,该值是从父类“Mage_Core_Model_Abstract”继承来的。这个属性的值是这个模型对应的模型集合的URI。
protected ‘_resourceCollectionName’ => string ‘mymodule/blog_collection’。
更多具体的我们可以:
$data1=Mage::getModel(‘mymodule/blog’);
var_dump($data); #打印数组就可以看到protected ‘_resourceCollectionName’ =>
在默认情况下,这个值是模型的URI加上“_collection”。Magento把模型集合也看做是一种资源(Resrouce),所以运用资源模型的命名规则,模型集合的全名是
我们追踪config.xml,看看我们的配置
<global><models><mymodule_resource> 在资源配置里,我们可以看到我们定于的资源类<class>是Mage_Mymodule_Model_Resource
Mage_Mymodule_Model_Resource_Blog_Collection
#因为我们是在Blog模型资源下
然后我们要创建如下文件
class Mage_Mymodule_Model_Resource_Blog_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract{
protected function _construct()
{
$this->_init(‘mymodule/blog’);
}
}
在这说下,如果是继承,可以查看核心代码的目录
好了,同样,我们在mymodule/index/index视图里增加个调用表单,用于输出blog表里的全部数据,增加个触发URL:
<a href=<?php echo $this->getUrl(‘mymodule/blog/blogsql’); ?>查看全部的blog数据</a>
这时候,Blog执行控制器我们需要写多个blogsql的代码:
function blogsqlAction()
{
$this->loadLayout();
$this->renderLayout();
}
直接引用布局,我们来增加布局配置:local.xml
<mymodule_blog_blogsql>
<reference name=”root”>
<block type=”mymodule/blogsql” name=”root” output=”toHtml” template=”mymodule/blogsql.phtml”/>
</reference>
</mymodule_blog_blogsql>
Block(块)里增加个Blogsql的方法:
class Mage_Mymodule_Block_Blogsql extends Mage_Core_Block_Template
{
protected $data;
function __construct()
{
$this->data=Mage::getModel(‘mymodule/blog’)->getCollection(); #实例模型全部资源
return $this->data; #返回的模型的值,给视图直接调用
}
}
已经实现了我们需要的,然后我们在视图里操作输出吧:
Blogsql.phtml文件里:
blogsql的视图:</br>
<?php
$o=0;
foreach($this->data as $blog)
{
echo “编号:”.$o++.”名字:”.$blog->getName().”-电话“.$blog->getPhone().”</br>”;
}
?>
如果我们需要之需要获取全部数据集中的name
可以用:$this->data=Mage::getModel(‘mymodule/blog’)->getCollection()->addAttributeToSelect(‘name’);
关于作者