<resources> <!-- ... --> <helloworld_setup> <setup> <module>Zhlmmc_Helloworld</module> <class>Zhlmmc_Helloworld_Model_Resource_Mysql4_Setup</class> </setup> <connection> <use>core_setup</use> </connection> </helloworld_setup> <!-- ... --> </resources>
<helloworld_setup>标签是用来唯一标识我们正在创建的资源配置。虽然不是强制要求,但是我们应该使用 “modelname_setup”来命名资源配置。<module>标签的内容是“Packagename_Modulename”。最 后,<class>标签的内容就是我们将要创建的资源配置类的类名。虽然对于基本的配置来说,没有必要创建一个单独的资源配置类,但是为了更 好的理解资源配置是如何工作的,我们的例子还是创建一个单独的类。 File: app/code/local/Zhlmmc/Helloworld/Model/Setup/Mysql4/Setup.php class Zhlmmc_Helloworld_Model_Setup_Mysql4_Setup extends Mage_Core_Model_Resource_Setup { }
<modules> <Zhlmmc_Helloworld> <version>0.1.0</version> </Zhlmmc_Helloworld> </modules>
这一部分是所有config.xml都必须包含的。它包含了模块的名称,还有版本。我们的安装脚本的名字将基于这个版本号,“0.1.0”。创建以下文件 File: app/code/local/Zhlmmc/Helloworld/sql/helloworld_setup/mysql4-install-0.1.0.php echo 'Running This Upgrade: '.get_class($this)."\n <br /> \n"; die("Exit for now");
文件路径中的“helloworld_setup”应该和上文在config.xml中添加的<helloworld_setup>一致。文 件名中的“0.1.0”就是模块的版本号。清空Magento缓存,访问任何URL,你应该看到以下内容 Running This Upgrade: Zhlmmc_Helloworld_Model_Setup_Mysql4_Setup Exit for now ...
这说明我们的安装脚本已经被运行了。我们先不放SQL脚本在这里,先把创建一个资源配置的流程走完。移除“die()”语句,重新装载页面,你应该看到你 的Upgrade语句在页面的顶部,再次刷新页面,页面应该正常显示了。 | helloworld_setup | 0.1.0 |
Magento就是根据这个版本来判断是否需要运行升级脚本的。这里“helloworld_setup”版本“0.1.0”,而我们的安装脚本也是 “0.1.0”,所以Magento不会再运行该脚本。如果你需要重新运行安装脚本(在开发的时候常用到),只要删除表中相应模块的数据就行了。让我们来 试试看 DELETE from core_resource where code = 'helloworld_setup'; 这次我们将通过安装脚本来创建数据表,所以我们也要删除之前创建的数据表 DROP TABLE blog_posts; 添加以下代码到我们的安装脚本 $installer = $this; $installer->startSetup(); $installer->run(" CREATE TABLE `{$installer->getTable('helloworld/blogpost')}` ( `blogpost_id` int(11) NOT NULL auto_increment, `title` text, `post` text, `date` datetime default NULL, `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP, PRIMARY KEY (`blogpost_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `{$installer->getTable('helloworld/blogpost')}` VALUES (1,'My New Title','This is a blog post','2009-07-01 00:00:00','2009-07-02 23:12:30'); "); $installer->endSetup(); 清空Magento缓存,访问任何URL,你应该发现“blog_posts”表又被建立了,拥有一条数据。 有个小错误。 修改Helloworld模型的config.xml <resources> <!-- ... --> <helloworld_setup> <setup> <module>Zhlmmc_Helloworld</module> <class>Zhlmmc_Helloworld_Model_Resource_Mysql4_Setup</class> </setup> <connection> <use>core_setup</use> </connection> </helloworld_setup> <!-- ... --> </resources>
这里<class>Zhlmmc_Helloworld_Model_Resource_Mysql4_Setup</class>和 后面创建的类
File: app/code/local/Zhlmmc/Helloworld/Model/Setup/Mysql4/Setup.php class Zhlmmc_Helloworld_Model_Setup_Mysql4_Setup extends Mage_Core_Model_Resource_Setup { }不一致
######对的,我写错了。 不过已经不能编辑帖子了,我想看的人应该都明白。######你这翻译挺好的,免去啃e文的痛苦,哈哈。谢谢了!######出现了下列错误: 请问是什么原因? exception 'Exception' with message 'Notice: Trying to get property of non-object in D:\Development\xampp\xampp\htdocs\magento\app\code\core\Mage\Core\Model\Resource.php on line 141' in D:\Development\xampp\xampp\htdocs\magento\app\code\core\Mage\Core\functions.php:245 Stack trace: #0 D:\Development\xampp\xampp\htdocs\magento\app\code\core\Mage\Core\Model\Resource.php(141): mageCoreErrorHandler(8, 'Trying to get p...', 'D:\Development...', 141, Array) #1 D:\Development\xampp\xampp\htdocs\magento\app\code\core\Mage\Core\Model\Resource.php(157): Mage_Core_Model_Resource->getEntity('', 'field') #2 D:\Development\xampp\xampp\htdocs\magento\app\code\core\Mage\Core\Model\Resource\Setup.php(118): Mage_Core_Model_Resource->getTableName('score/field') #3 D:\Development\xampp\xampp\htdocs\magento\app\code\local\Kaiwa\Score\sql\score_setup\mysql4-install-1.0.php(7): Mage_Core_Model_Resource_Setup->getTable('score/field') #4 D:\Development\xampp\xampp\htdocs\magento\app\code\core\Mage\Core\Model\Resource\Setup.php(360): include('D:\Development...') #5 D:\Development\xampp\xampp\htdocs\magento\app\code\core\Mage\Core\Model\Resource\Setup.php(260): Mage_Core_Model_Resource_Setup->_modifyResourceDb('install', '', '1.0') #6 D:\Development\xampp\xampp\htdocs\magento\app\code\core\Mage\Core\Model\Resource\Setup.php(224): Mage_Core_Model_Resource_Setup->_installResourceDb('1.0') #7 D:\Development\xampp\xampp\htdocs\magento\app\code\core\Mage\Core\Model\Resource\Setup.php(153): Mage_Core_Model_Resource_Setup->applyUpdates() #8 D:\Development\xampp\xampp\htdocs\magento\app\code\core\Mage\Core\Model\App.php(363): Mage_Core_Model_Resource_Setup::applyAllUpdates() #9 D:\Development\xampp\xampp\htdocs\magento\app\code\core\Mage\Core\Model\App.php(295): Mage_Core_Model_App->_initModules() #10 D:\Development\xampp\xampp\htdocs\magento\app\Mage.php(596): Mage_Core_Model_App->run(Array) #11 D:\Development\xampp\xampp\htdocs\magento\index.php(78): Mage::run('', 'store') #12 {main}######
<modules> <Zhlmmc_Helloworld> <version>0.1.0</version> </Zhlmmc_Helloworld> </modules>
这一部分是所有config.xml都必须包含的。它包含了模块的名称,还有版本。我们的安装脚本的名字将基于这个版本号,“0.1.0”。创建以下文件 File: app/code/local/Zhlmmc/Helloworld/sql/helloworld_setup/mysql4-install-0.1.0.php echo 'Running This Upgrade: '.get_class($this)."\n <br /> \n"; die("Exit for now");
文件路径中的“helloworld_setup”应该和上文在config.xml中添加的<helloworld_setup>一致。文 件名中的“0.1.0”就是模块的版本号。清空Magento缓存,访问任何URL,你应该看到以下内容 Running This Upgrade: Zhlmmc_Helloworld_Model_Setup_Mysql4_Setup Exit for now
无法出现上面的内容,哪里出问题了? ######
<resources> <!-- ... --> <helloworld_setup> <setup> <module>Zhlmmc_Helloworld</module> <class>Zhlmmc_Helloworld_Model_Resource_Mysql4_Setup</class> </setup> <connection> <use>core_setup</use> </connection> </helloworld_setup> <!-- ... --> </resources>
这里<class>Zhlmmc_Helloworld_Model_Resource_Mysql4_Setup</class>和 后面创建的类
File: app/code/local/Zhlmmc/Helloworld/Model/Setup/Mysql4/Setup.php class Zhlmmc_Helloworld_Model_Setup_Mysql4_Setup extends Mage_Core_Model_Resource_Setup { }不一致
嗯,是的######
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。