You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 19, 2024. It is now read-only.
## Step 2 Create an InstallData script {#instgde-cli-multistore}
90
+
## Step 2 Create an InstallData script {#CreateProductAttributeByUpgradeScript}
91
91
92
92
Next, we need to create the InstallData script.
93
93
Because adding an attribute technically adds records into several tables, such as `eav_attribute` and `catalog_eav_attribute,` this is data manipulation, not a schema change.
@@ -196,7 +196,7 @@ For now, we’ll just quickly go through most important ones:
196
196
***visible_on_front:** A flag that defines whether an attribute should be shown on the “More Information” tab on the frontend
197
197
***is_html_allowed_on_front:** Defines whether an attribute value may contain HTML
198
198
199
-
## Step 3: Add a source model
199
+
## Step 3: Add a source model {#AddSourceModel}
200
200
201
201
Next, we need to create the source model:
202
202
@@ -342,36 +342,43 @@ It should be visible and in bold text.
342
342
343
343
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.
344
344
345
-
### ADD OPTIONS ALONG WITH A NEW PRODUCT ATTRIBUTE
345
+
### ADD OPTIONS ALONG WITH A NEW PRODUCT ATTRIBUTE {#AddOptionsAlongNewProductAttribute}
346
346
347
-
Basic instructions for creating a product attribute by setup or upgrade script can be found [in DevDocs]{#instgde-cli-multistore}. 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 [in DevDocs](#CreateProductAttributeByUpgradeScript). Before scripting the attribute creation, pick one of these two use cases for your options:
348
348
349
349
* 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
350
* 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.
351
351
352
-
In the case of Use Case 1 (an 'immutable' set of options), follow Magento's instructions entitled "Step 3: Add a source model." You will create a model that contains and dynamically, on block rendering, returns your attribute's selectable options to the client.
352
+
In the case of 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.
353
353
354
-
In the case of Use Case 2 (a 'mutable' set of options), review Magento's article entitled "EAV and extension attributes," 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
+
In the case of 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.
355
355
356
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:
It's worth noting that store_id is hardcoded to 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.
364
+
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.
365
+
366
+
### ADD OPTIONS TO AN EXISTING PRODUCT ATTRIBUTE
367
+
368
+
For relevant background, review the [preceding section](#AddOptionsAlongNewProductAttribute) on adding options at the same time as a new product attribute.
363
369
364
-
ADD OPTIONS TO AN EXISTING PRODUCT ATTRIBUTE
365
-
For relevant background, review the preceding section on adding options at the same time as a new product attribute.
370
+
* 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.
366
371
367
-
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.
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. This is an example of how you might do this:
368
373
369
-
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:
0 commit comments