AlexMaxTM
@AlexMaxTM

Поле для ввода телефона с указанием маски и кода страны?

Всем привет!
Есть поле в БД для хранения телефонов в формате
79998889998899 для телефона России +7 999 888 999 88 99
819998889998899 для телефона Японии +81 999 888 999 88 99
8529998889998899 для телефона Гонконга +852 999 888 999 88 99
Хотелось бы сделать во вьюхе единое поле в котором код страны выбирается из select, и текстового поля для телефона по маске.
С маской более-менее понятно, но не соображу как сюда привязать select таким образом, выглядело как единое поле и чтобы валидация проходила.
<?= $form->field($model, 'phone')
                    ->textInput(['placeholder'=>'(999) 999 9999'])
                    ->widget(\yii\widgets\MaskedInput::className(), [
                        'mask' => '(999) 999 9999',
                        'clientOptions' => [
                            'removeMaskOnSubmit' => true,
                        ],
                    ]) ?>

5a7985cef3f78414978229.jpeg
  • Вопрос задан
  • 14963 просмотра
Пригласить эксперта
Ответы на вопрос 2
Написать свой widget
Паттерн проверки валидатором /^((\+\d{1,3})[\- ]?)?(\(?\d{2,3}\)?[\- ]?)?[\d\- ]{9,10}$/
Для каждой страны маска ввода своя соответственно для это используем виджет MaskedInput.
Рендерим template в field с использованием boostrap input-group (input-group-btn + dropdown-menu).
При выборе и инициализации виджета меняем маску input на выбранную из dropdown-menu. Аналогично иконку флага в input-group-btn.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы