Masked Input

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Аватара пользователя
asset
Сообщения: 245
Зарегистрирован: 2012.12.04, 20:50
Откуда: Казахстан

Masked Input

Сообщение asset »

Всем привет. Хочу сделать инпут типа как тут http://demos.krajee.com/masked-input басик

делаю так.

модел

Код: Выделить всё

<?php

namespace frontend\models;

use Yii;
use yii\base\Model;

class Pay extends Model
{
    public $phone;

    public function rules()
    {
        return [
            ['phone', 'match', 'pattern' => '/^((\+?7)(-?\d{3})-?)?(\d{3})(-?\d{4})$/', 'message' => 'fff'],
        ];
    }
 
}
 
view

Код: Выделить всё

use yii\widgets\MaskedInput;

<?php $form = ActiveForm::begin([
                    'id' => 'phone-form',
                    'layout' => 'inline',

                ]); ?>

                <?php 
                echo MaskedInput::widget([
                    'model' => $phone,
                    'attribute' => 'phone',
                     'name' => 'phone',
                     'mask' => '(999) 999-9999'
]);
                ?>

                <?= Html::submitButton('ОК') ?>

                <? ActiveForm::end(); ?>
не работает, Что опят делаю не так?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Masked Input

Сообщение zelenin »

Аватара пользователя
asset
Сообщения: 245
Зарегистрирован: 2012.12.04, 20:50
Откуда: Казахстан

Re: Masked Input

Сообщение asset »

zelenin писал(а):в yii свой https://github.com/yiisoft/yii2/blob/ma ... dInput.php
да,я как рас из коробки использую ( use yii\widgets\MaskedInput ). Имел ввиду как использовать как в ссылке сверху c масками итд.

нечего не понятно примеров нету.
Аватара пользователя
asset
Сообщения: 245
Зарегистрирован: 2012.12.04, 20:50
Откуда: Казахстан

Re: Masked Input

Сообщение asset »

хм получился в другом созданном проекте.
Аватара пользователя
asset
Сообщения: 245
Зарегистрирован: 2012.12.04, 20:50
Откуда: Казахстан

Re: Masked Input

Сообщение asset »

Делаем так чтоб ActiveForm сработал.

Код: Выделить всё

 <?= $form->field($model, 'phone')->widget(MaskedInput::className(),[
             'name' => 'phone',
             'mask' => '(999) 999-9999'
  ]) ?>
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Masked Input

Сообщение NEIRON »

А у меня почему-то так и не заработал из коробки
файл _form.php

Код: Выделить всё

...
use yii\widgets\MaskedInput;
...
$form = ActiveForm::begin(); 
$form->field($model, 'phone')->widget(MaskedInput::className(),['mask' => '(999) 999-9999']); 
ActiveForm::end(); 
... 
В консоли выводится ошибка:
$("#organization-phone").inputmask(inputmask_e4f2ec36);
Откуда такой набор символов: inputmask_e4f2ec36 не понятно.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Masked Input

Сообщение zelenin »

NEIRON писал(а):Откуда такой набор символов: inputmask_e4f2ec36 не понятно.
https://github.com/yiisoft/yii2/blob/ma ... t.php#L142
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Masked Input

Сообщение NEIRON »

Хорошо, хэш появляется теперь понятно откуда.
А почему вообще маска не срабатывает не можете предположить?

В html-документе поле выглядит следующим образом:

Код: Выделить всё

<div class="form-group field-organization-phone">
    <label class="control-label" for="organization-phone">Телефон</label>
    <input type="text" id="organization-phone" class="form-control" name="Organization[phone]" value="1234567890">
    <div class="help-block"></div>
</div>
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Masked Input

Сообщение zelenin »

смотрите в консоли ошибку
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Masked Input

Сообщение NEIRON »

zelenin писал(а):смотрите в консоли ошибку
Uncaught ReferenceError: inputmask_7b93eb48 is not defined
mask.png
mask.png (32.57 КБ) 14875 просмотров
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Masked Input

Сообщение zelenin »

NEIRON писал(а):
zelenin писал(а):смотрите в консоли ошибку
Uncaught ReferenceError: inputmask_7b93eb48 is not defined
mask.png
у вас не объявлена переменная, которая передается в качестве опций.
А вот тут она создается https://github.com/yiisoft/yii2/blob/ma ... t.php#L145 поищите в head, если такое.
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Masked Input

Сообщение NEIRON »

zelenin писал(а): у вас не объявлена переменная, которая передается в качестве опций.
А вот тут она создается https://github.com/yiisoft/yii2/blob/ma ... t.php#L145 поищите в head, если такое.
В head ничего такого нет:

Код: Выделить всё

<head>
        <title>Update Organization:  Организация 2</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
        <meta name="viewport" content="width=device-width, initial-scale=1"/>
        <link rel="icon" href="/favicon.ico" type="image/x-icon"/>
        <link rel="stylesheet" type="text/css" id="theme" href="/templates/atlant/css/theme-default.css"/>
        <link rel="stylesheet" type="text/css" id="theme" href="/css/style.css"/>
        <meta name="csrf-param" content="_csrf">
        <meta name="csrf-token" content="Mnc4SEgxWDAFDVE8PAkgCXYDVw0wYC9nfk5NBDFeHltQNlo4IH4Rew==">
</head>
Может, где-то зависимости для данного виджета надо указать, я имею ввиду в конфигах.
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Masked Input

Сообщение NEIRON »

zelenin писал(а):у вас не объявлена переменная, которая передается в качестве опций.
А вот тут она создается https://github.com/yiisoft/yii2/blob/ma ... t.php#L145 поищите в head, если такое.
Сейчас на чистый Yii2 применил этот виджет, всё заработало. Значит, что-то где-то уже накосячил, вроде ядро не менял, скрипты всех шаблонов тоже отключены. Будем разбираться, спасибо за помощь.
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Masked Input

Сообщение NEIRON »

Да, действительно, всё отлично работает.
В новом шаблоне в head забыл указать:

Код: Выделить всё

<?php $this->head() ?>
zelenin писал(а):
- спасибо.
Аватара пользователя
kolovsky
Сообщения: 37
Зарегистрирован: 2015.04.01, 15:13
Контактная информация:

Re: Masked Input

Сообщение kolovsky »

Всем привет!

Тоже проблемы с MaskedInput, но в консоли ошибок нет, что это может быть?
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Masked Input

Сообщение NEIRON »

kolovsky писал(а):Всем привет!
Тоже проблемы с MaskedInput, но в консоли ошибок нет, что это может быть?
Наверное, нужно как минимум показать ваш код и что в итоге вы получаете на экране.

От себя хочу спросить у гуру. Использую маску такого вида для телефона:

Код: Выделить всё

<?= $form->field($model, 'phone_work')->widget(MaskedInput::classname(), [
      'mask' => '8 (999) 999-99-99',
    ]) ?>
Получаю, что и в базу значения попадают прям 1 в 1 из input'a: 8 (495) 123-45-67, а я хочу, что бы в базу записывалось только 4951234567
Т.к. в дальнейшем планируется сделать поиск по номеру телефона, и предполагаю, что его будет проще реализовать, если в БД телефон будет храниться в 9-значном формате без скобочек и тире.

Каких-то встроенных методов в MaskedInput не нашел, которые возвращали бы только введенные пользователем данные.
Либо кто-то может поделиться идеями хранения и работы с номерами телефонов на Yii2. Спасибо.
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Masked Input

Сообщение rak »

NEIRON писал(а): От себя хочу спросить у гуру. Использую маску такого вида для телефона:

Код: Выделить всё

<?= $form->field($model, 'phone_work')->widget(MaskedInput::classname(), [
      'mask' => '8 (999) 999-99-99',
    ]) ?>
Получаю, что и в базу значения попадают прям 1 в 1 из input'a: 8 (495) 123-45-67, а я хочу, что бы в базу записывалось только 4951234567
Т.к. в дальнейшем планируется сделать поиск по номеру телефона, и предполагаю, что его будет проще реализовать, если в БД телефон будет храниться в 9-значном формате без скобочек и тире.
у самого js плагина есть настройка removeMaskOnSubmit
https://github.com/RobinHerbots/jquery. ... skonsubmit
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Masked Input

Сообщение NEIRON »

rak писал(а):у самого js плагина есть настройка removeMaskOnSubmit
https://github.com/RobinHerbots/jquery. ... skonsubmit
Спасибо.

Код: Выделить всё

<?= $form->field($model, 'phone_work')->widget(MaskedInput::classname(), [
      'mask' => '8 (999) 999-99-99',
      'clientOptions'=>[
        'removeMaskOnSubmit' => true,
      ]
    ]) ?>
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Masked Input

Сообщение NEIRON »

rak писал(а):у самого js плагина есть настройка removeMaskOnSubmit
https://github.com/RobinHerbots/jquery. ... skonsubmit
Может вы еще заодно знаете как провести обратную операцию, т.е. в базе хранится 1234567890 а на экране вывести 8 (123) 456-78-90
Сейчас это выглядит следующим образом:

Код: Выделить всё

<?= DetailView::widget([
      'model' => $model,
      'attributes' => [
        [
          'attribute' => 'phone_work',
          'format'=>'raw',
          'value' => Html::a($model->phone_work,'tel:'.$model->phone_work)
        ]
      ],
    ]) ?>
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Masked Input

Сообщение rak »

NEIRON писал(а):
rak писал(а):у самого js плагина есть настройка removeMaskOnSubmit
https://github.com/RobinHerbots/jquery. ... skonsubmit
Может вы еще заодно знаете как провести обратную операцию, т.е. в базе хранится 1234567890 а на экране вывести 8 (123) 456-78-90
Сейчас это выглядит следующим образом:

Код: Выделить всё

<?= DetailView::widget([
      'model' => $model,
      'attributes' => [
        [
          'attribute' => 'phone_work',
          'format'=>'raw',
          'value' => Html::a($model->phone_work,'tel:'.$model->phone_work)
        ]
      ],
    ]) ?>
ну так может тогда лучше хранить в этом формате в бд?
Ответить