Skip to content
This repository was archived by the owner on Nov 19, 2024. It is now read-only.

Commit 92fc13a

Browse files
author
Dinesh V B
committed
issue-8347-made the requested changes
2 parents 02bd601 + a8c951a commit 92fc13a

File tree

1 file changed

+16
-20
lines changed

1 file changed

+16
-20
lines changed

src/_videos/fundamentals/add-new-product-attribute.md

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -342,18 +342,18 @@ It should be visible and in bold text.
342342

343343
A product attribute of type multiselect or select will present selectable options to the user. These options may be added manually through the admin panel or by upgrade script. The script process is slightly different depending on whether the options are being added at the moment of attribute creation or whether the options are being added at a later time to an existing attribute.
344344

345-
### ADD OPTIONS ALONG WITH A NEW PRODUCT ATTRIBUTE {#AddOptionsAlongNewProductAttribute}
345+
### Add options to a new prouduct attribute {#AddOptionsAlongNewProductAttribute}
346346

347-
Basic instructions for creating a product attribute by setup or upgrade script can be found [in DevDocs](#CreateProductAttributeByUpgradeScript). Before scripting the attribute creation, pick one of these two use cases for your options:
347+
Basic instructions for creating a product attribute by setup or upgrade script can be found [above](#CreateProductAttributeByUpgradeScript). Before scripting the attribute creation, pick one of these two use cases for your options:
348348

349349
1. You want a set of options which cannot be modified by a user through the admin panel and which can only be changed through a future code push.
350-
1. You want a set of options which can be modified, added or deleted through the admin panel by any user with admin access and proper authorization.
350+
1. You want a set of options which can be modified, added or deleted through the admin panel.
351351

352-
For use case `1` (an 'immutable' set of options), follow Magento's instructions entitled ["Add a source model"](#AddSourceModel) You will create a model that contains and dynamically, on block rendering, returns your attribute's selectable options to the client.
352+
For use case `1` (an 'immutable' set of options), follow the above instructions ["Add a source model"](#AddSourceModel). You will create a model that contains and dynamically returns the attribute's selectable options to the client.
353353

354-
For use case `2` (a 'mutable' set of options), review Magento's article entitled ["EAV and extension attributes"](_site/guides/v2.4/extension-dev-guide/attributes.html), noting especially the attribute option entitled option. Also make certain to declare 'Magento\Eav\Model\Entity\Attribute\Source\Table' as the value for the 'source' attribute option. This ensures that Magento will store options in the appropriate database table.
354+
For use case `2` (a 'mutable' set of options), see ["EAV and extension attributes"]({{ site.baseurl }}/guides/v2.4/extension-dev-guide/attributes.html). Make sure to declare 'Magento\Eav\Model\Entity\Attribute\Source\Table' as the value for the 'source' attribute option. This ensures that Magento will store options in the appropriate database table.
355355

356-
Investigating \Magento\Eav\Setup\EavSetup.php::addAttribute() and \Magento\Eav\Setup\EavSetup.php::addAttributeOptions() reveals that you may add a series of options with the following array:
356+
With `\Magento\Eav\Setup\EavSetup.php::addAttribute()` and `\Magento\Eav\Setup\EavSetup.php::addAttributeOptions()` you can add a series of options with the following array:
357357

358358
```
359359
'option' => ['values' => ['Option 1', 'Option 2', 'Option 3', etc.]]
@@ -365,30 +365,26 @@ Alternatively, you may designate a specific option sorting order as follows:
365365
'option' => ['values' => [8 => 'Option 1', 3 => 'Option 2', 11 => 'Option 3', etc.]]
366366
```
367367

368-
It's worth noting that store_id is hardcoded by default to 0 with no good way to change this other than overriding the class or using the plugin to intercept the database insert method, which would probably be a performance killer as often as that gets called.
368+
### Add options to an existing product attribute
369369

370-
### ADD OPTIONS TO AN EXISTING PRODUCT ATTRIBUTE
370+
* To add options to an 'immutable' set of options, modify the custom source model with the additional options you wish to provide.
371371

372-
For relevant background, review the [preceding section](#AddOptionsAlongNewProductAttribute) on adding options at the same time as a new product attribute.
372+
* Adding options to a 'mutable' set of options leverages the same `EavSetup` object as you use when creating an attribute with options, but requires an additional step because `EavSetup` needs to know to which attribute you want to assign new options.
373373

374-
* Adding options to an 'immutable' set of options is as simple as modifying your custom source model with the additional options you wish to provide.
375-
376-
* Adding options to a 'mutable' set of options leverages the same EavSetup object as you use when creating an attribute with options, but requires an additional step because EavSetup needs to know to which attribute you want to assign new options. This is an example of how you might do this:
377-
378-
Assign an array of new options to a variable:
374+
1. Assign an array of new options to a variable:
379375

380376
```
381-
$options = ['attribute_id' => null, 'values' => 'Option 1', 'Option 2', etc]];
377+
$options = ['attribute_id' => null, 'values' => 'Option 1', 'Option 2', etc]];
382378
```
383379

384-
Update your array with the attribute ID from the database:
380+
1. Update your array with the attribute ID from the database:
385381

386382
```
387-
$options['attribute_id'] = $eavSetup->getAttributeId($eavSetup->getEntityTypeId('catalog_product'), 'your_attribute_code');
383+
$options['attribute_id'] = $eavSetup->getAttributeId($eavSetup->getEntityTypeId('catalog_product'), 'your_attribute_code');
388384
```
389385

390-
Add your options:
386+
1. Add your options:
391387

392388
```
393-
$eavSetup->addAttributeOption($options);
394-
```
389+
$eavSetup->addAttributeOption($options);
390+
```

0 commit comments

Comments
 (0)