Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Why is there no Region dropdown option? #42

Open
lanrosta opened this issue Nov 2, 2017 · 2 comments
Open

Why is there no Region dropdown option? #42

lanrosta opened this issue Nov 2, 2017 · 2 comments

Comments

@lanrosta
Copy link

lanrosta commented Nov 2, 2017

I see there is an option to use the Country Dropdown, but I do not see one for the magento Regions. Any reason why devs?

@UltimateModuleCreator
Copy link
Owner

@lanrosta Main reason it the lack of time. Also for regions is a bit trickier because in order to get a region you need to select a country first and not all countries have regions in the DB. This means more php/js logic to be generated.

@lanrosta
Copy link
Author

lanrosta commented Nov 7, 2017

@dev - This should be pretty easy to implement for you. All you need to do is create an option for dropdown that is called 'Country and Region'. Then if this is selected, generate this code for the admin form...

<field name="country_id"> <argument name="data" xsi:type="array"> <item name="options" xsi:type="object">Magento\Directory\Model\ResourceModel\Country\Collection</item> <item name="config" xsi:type="array"> <item name="label" xsi:type="string" translate="true">Country</item> <item name="formElement" xsi:type="string">select</item> <item name="sortOrder" xsi:type="number">120</item> <item name="source" xsi:type="string">address</item><!-- fieldset name --> <item name="dataScope" xsi:type="string">country</item><!-- 'country' - db table column name where country code is saved --> <item name="validation" xsi:type="array"> <item name="required-entry" xsi:type="boolean">true</item> </item> </item> </argument> </field> <field name="region_id"> <argument name="data" xsi:type="array"> <item name="options" xsi:type="object">Magento\Directory\Model\ResourceModel\Region\Collection</item> <item name="config" xsi:type="array"> <item name="label" xsi:type="string" translate="true">State/Province</item> <item name="formElement" xsi:type="string">select</item> <item name="sortOrder" xsi:type="number">130</item> <item name="source" xsi:type="string">address</item><!-- fieldset name --> <item name="customEntry" xsi:type="string">state_province</item><!-- 'state_province' - db table column name where region name is saved --> <item name="dataScope" xsi:type="string">state_province_id</item><!-- 'state_province_id' - db table column name where region id is saved --> <item name="validation" xsi:type="array"> <item name="required-entry" xsi:type="boolean">true</item> </item> <item name="filterBy" xsi:type="array"> <item name="target" xsi:type="string">${ $.provider }:${ $.parentScope }.country</item><!-- 'country' - db table column name where country code is saved --> <item name="field" xsi:type="string">country_id</item><!-- country_id field name --> </item> </item> </argument> </field> <field name="region"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="dataType" xsi:type="string">text</item> <item name="label" xsi:type="string" translate="true">State/Province</item> <item name="formElement" xsi:type="string">input</item> <item name="sortOrder" xsi:type="number">135</item> <item name="source" xsi:type="string">address</item><!-- fieldset name --> <item name="customEntry" xsi:type="string">state_province</item><!-- 'state_province' - db table column name where region name is saved --> <item name="dataScope" xsi:type="string">state_province</item><!-- 'state_province' - db table column name where region name is saved --> <item name="visible" xsi:type="boolean">false</item> </item> </argument> </field>

Note this creates three fields (an extra for state_province Text field for Countries with no State Province dropdown in Magento). Also note that the field names MUST be the same for each control!

Then for the admin Listing page...

<column name="country"> <argument name="data" xsi:type="array"> <item name="options" xsi:type="object">Magento\Config\Model\Config\Source\Locale\Country</item> <item name="config" xsi:type="array"> <item name="filter" xsi:type="string">select</item> <item name="editor" xsi:type="array"> <item name="editorType" xsi:type="string">select</item> <item name="validation" xsi:type="array"> <item name="required-entry" xsi:type="boolean">true</item> </item> </item> <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/select</item> <item name="dataType" xsi:type="string">select</item> <item name="label" xsi:type="string" translate="true">Country</item> <item name="sortOrder" xsi:type="number">170</item> </item> </argument> </column> <column name="region"> <argument name="data" xsi:type="array"> <item name="options" xsi:type="object">Magento\Config\Model\Config\Source\Locale\Country</item> <item name="config" xsi:type="array"> <item name="filter" xsi:type="string">select</item> <item name="editor" xsi:type="array"> <item name="editorType" xsi:type="string">select</item> <item name="validation" xsi:type="array"> <item name="required-entry" xsi:type="boolean">true</item> </item> </item> <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/select</item> <item name="dataType" xsi:type="string">select</item> <item name="label" xsi:type="string" translate="true">Region</item> <item name="sortOrder" xsi:type="number">180</item> </item> </argument> </column> <column name="state_province_id"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="filter" xsi:type="string">text</item> <item name="editor" xsi:type="string">text</item> <item name="dataType" xsi:type="string">text</item> <item name="label" xsi:type="string" translate="true">State ID</item> <item name="sortOrder" xsi:type="number">190</item> </item> </argument> </column>

More info can be found here: See Petttro's answer here: https://magento.stackexchange.com/questions/134002/ui-component-form-state-region-field-update-after-country-select-m-2-1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants