@hollanditkzn

Как преобразовывать значение в валидации?

Такой вопрос, у меня виджет стоит MaskedInput денежный формат. Там вбиваешь допустим 101111120, в инпуте 10 111 120'. Только когда отправляешь форму на сохранение значение поле пишет значение должно быть числом. Из формата integer перекинулся на doulbe но проблему я так и не решил
во вьюшке
<?= $form->field($model, 'oplata')->widget(MaskedInput::className(), [
                    'clientOptions' => [
                        'alias' => 'decimal',
                        'groupSeparator' => ' ',
                        'autoGroup' => true,
                    ],
                'options' => ['placeholder' => 'Cтоимость', 'class' => 'inputWidget-form'],
            ])->label(false) ?>

В моделе
public function rules()
    {
        return [
            [[ 'oplata'], 'number'],
        ];
    }

Мне грубо говоря нужно указать в валидации $model->oplata = str_replace(" ", "", $model->oplata);
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Как только в строке появляются пробелы, это уже не может быть числом, это строка.
['oplata', 'filter', 'filter' => function ($value) {
        return str_replace(" ", "", $value);
    }],

Читайте доки:
www.yiiframework.com/doc-2.0/guide-tutorial-core-v...
каждый час чтения документации экономит 100 часов потраченные на поиски решений, странные решения и устранения проблем связанными с ними.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы