Problem/Motivation
The annotation/instructions in the PhoneInternationalElement class for using a field in a custom form are incorrect.
* @code
* $form['phone'] = [
* '#type' => 'phone_international',
* '#title' => $this->t('International Phone'),
* '#attributes' => [
* 'data-country' => 'PT',
* 'data-geo' => 0, // 0(Disable) or 1(Enable)
* 'data-exclude' => [],
* 'data-only' => [],
* 'data-preferred' => ['PT']
* ],
* ];
* @endcode
The settings for the field can not be added as attributes because they get overwritten in the processInternationalPhone method
Proposed resolution
Better document how to use the field with form api in a custom field, which is to use the array keys #countries, #exclude_countries, #country i.e.
* @code
* $form['phone'] = [
* '#type' => 'phone_international',
* '#title' => $this->t('International Phone'),
* '#countries' => 'all',
* '#country' => 'uk'
* ];
* @endcode
Comments
Comment #2
niharika.s commentedI have applied the changes please review it .
Comment #3
joe huggans@nikarika.s - I don't think this works, because the JS in the module looks for these data attributes, so it would break the field to remove them.
The only thing needed here is to update the annotation.
Comment #4
tim_dj@niharika.s you are right the instructions are wrong but you should not change the code but the instructions in the annotations on line 31.
These should not include "data-" and for preferred country it should be: #preferred_countries
Comment #5
joe huggansI actually opened this issue myself @tim_dj, I've provided an MR already
Comment #6
tim_dj@joe huggans
Looks good but missing some properties. Looking at code you will have to add the following as well:
#countries
#exclude_countries
#geolocation
#preferred_countries
Comment #7
tim_djComment #8
joe huggans@tim_dj
Thanks for the reply, maybe we should add those properties in a separate code example because above the one in question it states "If you want a default country you need to do this:".
But as far as I am aware, the following are not required in order to set a default_country?
#countries
#exclude_countries
#geolocation
#preferred_countries
Comment #10
joe huggansI've made another edit to the annotation, let me know if I can make any improvements. Thanks
Comment #11
tim_dj@joe huggans
Looks good I noticed one more thing though. I think by default geolocation is disabled. See PhoneInternationalElement.php:101
Comment #12
joe huggans@tim_dj
good call, I've made a change and also fixed some phpcs issues.
Comment #13
tim_djComment still says by default geolocation is enabled.
See PhoneInternationalElement.php:15
Comment #14
tim_djComment #15
joe huggansComment #16
tim_djLooks good
Comment #17
saidatomComment #19
saidatomComment #20
saidatom