Skip to content

Commit 46ef51c

Browse files
ENGCOM-3193: #14510: Creating custom customer attribute with default value 0 will cause not saving value for customer entity. #16915
2 parents 81840e8 + a9a80fe commit 46ef51c

File tree

5 files changed

+66
-6
lines changed

5 files changed

+66
-6
lines changed

app/code/Magento/Catalog/Model/Product/Attribute/Backend/Boolean.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ public function beforeSave($object)
2525
$attributeCode = $this->getAttribute()->getName();
2626
if ($object->getData('use_config_' . $attributeCode)) {
2727
$object->setData($attributeCode, BooleanSource::VALUE_USE_CONFIG);
28+
return $this;
2829
}
29-
return $this;
30+
31+
return parent::beforeSave($object);
3032
}
3133
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Downloadable\Setup;
8+
9+
use Magento\Eav\Setup\EavSetup;
10+
use Magento\Eav\Setup\EavSetupFactory;
11+
use Magento\Framework\Setup\ModuleDataSetupInterface;
12+
use Magento\Framework\Setup\UpgradeDataInterface;
13+
use Magento\Framework\Setup\ModuleContextInterface;
14+
15+
/**
16+
* @codeCoverageIgnore
17+
*/
18+
class UpgradeData implements UpgradeDataInterface
19+
{
20+
/**
21+
* EAV setup factory
22+
*
23+
* @var EavSetupFactory
24+
*/
25+
private $eavSetupFactory;
26+
27+
/**
28+
* Init
29+
*
30+
* @param EavSetupFactory $eavSetupFactory
31+
*/
32+
public function __construct(EavSetupFactory $eavSetupFactory)
33+
{
34+
$this->eavSetupFactory = $eavSetupFactory;
35+
}
36+
37+
/**
38+
* @inheritdoc
39+
*/
40+
public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
41+
{
42+
$setup->startSetup();
43+
44+
if (version_compare($context->getVersion(), '2.0.3', '<')) {
45+
/** @var EavSetup $eavSetup */
46+
$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
47+
// remove default value
48+
$eavSetup->updateAttribute(
49+
\Magento\Catalog\Model\Product::ENTITY,
50+
'links_exist',
51+
'default_value',
52+
null
53+
);
54+
}
55+
56+
$setup->endSetup();
57+
}
58+
}

app/code/Magento/Downloadable/etc/module.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77
-->
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
9-
<module name="Magento_Downloadable" setup_version="2.0.2">
9+
<module name="Magento_Downloadable" setup_version="2.0.3">
1010
<sequence>
1111
<module name="Magento_Catalog"/>
1212
</sequence>

app/code/Magento/Eav/Model/Entity/Attribute/AbstractAttribute.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ public function getIsVisibleOnFront()
392392
}
393393

394394
/**
395-
* @return string|int|bool|float
395+
* @return string|null
396396
* @codeCoverageIgnore
397397
*/
398398
public function getDefaultValue()

app/code/Magento/Eav/Model/Entity/Attribute/Backend/AbstractBackend.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,12 +203,12 @@ public function getEntityValueId($entity)
203203
/**
204204
* Retrieve default value
205205
*
206-
* @return mixed
206+
* @return string
207207
*/
208208
public function getDefaultValue()
209209
{
210210
if ($this->_defaultValue === null) {
211-
if ($this->getAttribute()->getDefaultValue()) {
211+
if ($this->getAttribute()->getDefaultValue() !== null) {
212212
$this->_defaultValue = $this->getAttribute()->getDefaultValue();
213213
} else {
214214
$this->_defaultValue = "";
@@ -280,7 +280,7 @@ public function afterLoad($object)
280280
public function beforeSave($object)
281281
{
282282
$attrCode = $this->getAttribute()->getAttributeCode();
283-
if (!$object->hasData($attrCode) && $this->getDefaultValue()) {
283+
if (!$object->hasData($attrCode) && $this->getDefaultValue() !== '') {
284284
$object->setData($attrCode, $this->getDefaultValue());
285285
}
286286

0 commit comments

Comments
 (0)