Questions tagged «magic-getter»

2
Magento 2-使用/避免使用吸气剂的良好实践?
Varien_Object(M1)和DataObject(M2)上的魔术吸气剂是常见的做法,但是使用Magento 2时,使用它会感到错误。 好: 容易读/写 坏 在键中使用数字时会引起问题(请参阅:Magento 2:使用驼峰式大小写的不同方式获取集合的字段或获取自定义产品属性) 代码分析工具抱怨不存在的方法 题 使用Magento 2,我们有两种新方法: getDataByKey($key) getDataByPath($path) 是否有充分的理由继续使用getData($key)或使用任何吸气剂? 编辑: @Vinai谢谢。我没有提及该@method方法,因为我的方法大不相同。 它仅对IDE有帮助,对其他方面没有影响。 有几个mergedf PR是“微优化”的,例如在循环外(甚至对于小型阵列)强制转换为数组大小或(int)替代intval()数组大小。 另一方面,有 神奇的吸气剂,正如马吕斯(Marius)所说的那样有些“开销”。 strtolower(trim(preg_replace('/([A-Z]|[0-9]+)/', "_$1", $name), '_')); getData($key) Mehtods还必须额外进行2-3次检查... if ('' === $key) { if (strpos($key, '/')) { if ($index !== null) { 对于自己的代码,完全同意倾向于使用实际方法,但是在相同情况下,这是不可能的...例如,您创建了一个自定义事件... $value = $observer->getVar_1(); $value = $observer->getData('var_1'); $value = …

2
吸气剂/塞特剂的插件
我试图将评论的状态approved改为pending用户在Magento 2的前端中发布评论的状态。 我采用了这种方法。创建前的插件,仅适用于前端区域,该方法setStatusId为Magento\Review\Model\Review是这个样子的 public function beforeSetStatusId(\Magento\Review\Model\Review $review, $status) { return [\Magento\Review\Model\Review::STATUS_APPROVED]; } 这对我来说就像一个好主意。自我返回批准状态以来,它应该可以正常工作。然后,实际方法应将此作为参数。 但令我惊讶的是,它没有用。 然后我挖了一下,发现setStatusId评论模型中不存在该方法。它被神奇地称为,它实际上可以运行setData('status_id', $status)。 然后,我在生成的拦截器中进行了查看,实际上没有setStatusId方法。 我该如何在magento 2中插入魔术获取器/设置器?那有可能吗? 注意:我不需要使评论自动获得批准的解决方案。我知道我可以采取其他方法,例如save_before赛事。目前这并不重要。

2
Magento 2:以不同方式获取集合的字段
我在Magento 2中有这个辅助课程: class Data extends \Magento\Framework\App\Helper\AbstractHelper { protected $_countryFactory; public function __construct( \Magento\Directory\Model\CountryFactory $countryFactory ) { $this->_countryFactory = $countryFactory; } public function getCountryIsoCode($country = 'US') { $country = $this->_countryFactory->create()->getCollection(); $country->addFieldToFilter('country_id', array('eq' => country)); $countryCode = $country->getFirstItem()->getIso3Code()); $countryCode2 = $country->getFirstItem()->getData('iso3_code')); // $countryCode => null // $countryCode2 => 'USA' return $countryCode; } …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.