сохранение в бд телефонный формат в бд

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
hollanditkzn
Сообщения: 95
Зарегистрирован: 2017.03.28, 17:37

сохранение в бд телефонный формат в бд

Сообщение hollanditkzn »

Есть виджет по маске MaskedInput, только проблема в том, что валидацию она не проходит
Client.php

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

public function rules()
    {
        return [
            [['name', 'phone'], 'required', 'on' => self::SCENARIO_DEFAULT],
            [['phone'], 'number'],
            [['phone'], 'filter', 'filter' => function($value){
                return str_replace(['(', ')', '-'], '', $value);
            }],
            [['phone'], 'unique'],
        ];
    }
И во вьюшке

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

<?= $form->field($model, 'phone')->widget(MaskedInput::className(),[
        'mask' => '8(999)999-99-99',
    ]) ?>
Если по документации следовать то там массив можно применять, но почему то всегда выходит валидация, что телефон должен быть целым числом
В базе данных тип decimal
Есть конечно одно предложение, но может оно не правильная в реализации, это в моделе сделать не number а string. И непосредственно через регулярное выражение указать что там должны быть цифры. И когда попадает в бд, то там сохраняется только цифры, отбрасывается все символы. Но сам конечно как это делается и как сохраняют телефонынй формат в бд
kawabanga
Сообщения: 806
Зарегистрирован: 2013.10.12, 23:35
Откуда: Новосибирск

Re: сохранение в бд телефонный формат в бд

Сообщение kawabanga »

https://toster.ru/q/452456 используйте string...
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: сохранение в бд телефонный формат в бд

Сообщение Nerf »

У вас фильтр срабатывает после валидации.
Зачем в БД decimal, телефон бывает дробным? Действительно, храните строкой.
hollanditkzn
Сообщения: 95
Зарегистрирован: 2017.03.28, 17:37

Re: сохранение в бд телефонный формат в бд

Сообщение hollanditkzn »

Дробный? в каких случаях это бывает дробным? Просто не разу не виде чтобы номер был дробным
kawabanga
Сообщения: 806
Зарегистрирован: 2013.10.12, 23:35
Откуда: Новосибирск

Re: сохранение в бд телефонный формат в бд

Сообщение kawabanga »

Имеется в виду использование типов.

decimal - дробное с определенной точностью.
integer - целое
bigint - большое целое

Вы используете decimal... А это немного неуместный тип здесь.
Закрыто