系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》
本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。
EAV和简单模型都是从Magento\Framework\Model\AbstractModel类扩展而来的,该类进一步扩展了Magento\ Framework\DataObject。
DataObject有一些巧妙的方法值得记住。
以下一组方法用于处理数据转换:toArray:将对象数据的数组转换为$keys数组中请求的具有键的数组
toXML:将对象数据转换为XML
toJson:将对象数据转化为JSON
toString:将对象数转换为具有预定义格式的字符串
serialize:将对象数据转换为具有定义的键和值的字符串这些方法的其他组通过magic__call方法实现,启用以下简洁的语法:
get<AttributeName>,例如$object->getPackagingOption()
设置<AttributeName],例如$object->setPackagingOption('plastic_bag')uns<AttributeName>
[例如$object->unsPackagingOptions()具有<AttributeName',
例如$bject->hasPackagingOption[(]要快速理解这种魔力,让我们手动创建如下所示的magelicious_core_log表:
CREATE TABLE `magelicious_core_log` (`entity_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `severity_level` varchar(24) NOT NULL, `note` text NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY(`entity_id`)) ENGINE = InnoDB DEFAULT CHARSET = utf8;
借助DataObject的魔力,我们空的Magelicious\Core\Model\Log模型仍然可以保存其数据,如下所示:
$log - > setCreatedAt(new\ DateTime()); $log - > setSeverityLevel('info'); $log - > setNote('Just Some Note'); $log - > save();
虽然这个例子会起作用,但它的作用远不止于此。手动创建表对于构建模块来说是不可行的。Magento对此有一个正确的机制,称为设置脚本。