@DaniLaFokc
Пытаюсь что то делать

Как работать с json полями в yii2?

Недавно узнал, что в Yii2 есть поддержка Json полей, поэтому решил переписать старый код, но столкнулся с трудностями.

При получении информации никаких проблем нет, не нужно самому декодировать поле, значение приходит уже в виде массива. Но при попытке изменения значений возникает проблема.

Значение некорректно отображается в форме. Отображается "Array"
<?= $form->field($model, 'meta')->textInput(['maxlength' => true]) ?>

Ну тут вроде всё ясно. Просто перед отправкой модели в форму нужно сделать json_encode и передать строку:
$model->meta = json_encode($model->meta);

Но как теперь сохранить значение при отправке формы?Открываю форму, редактирую значение Json поля, которое записано в виде строки и сохраняю. В посте приходит модель с измененной Json строкой, все ок.
Вот, что приходит в посте

Array
(
    [_csrf] => VmUwDTNtfnkj2HqHmZJyxfaKMTC_IFElEnXlXuJloTcOKmVXUQQxNk2HLb7TxCChhflVZdUUBVJjRI4auDPqDg==
    [Sale] => Array
        (
            ...
            [meta] => {<b>"sub_CHANGED":3</b>,"icon":"fal fa-gift","text":"-70%","price":1650,"oldPrice":5500}
            ...
        )

)


Но при загрузке модели $model->load(Yii::$app->request->post() нет никаких изменений в данных.
Загруженная модель

app\models\Sale Object
(
    [_attributes:yii\db\BaseActiveRecord:private] => Array
        (
            ...
            [meta] => {<b>"sub":3</b>,"icon":"fal fa-gift","text":"-70%","price":1650,"oldPrice":5500}
            ...
        )


Есть подозрение, что здесь что то не так с валидацией, но не знаю что. В чем может быть проблема?
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 1
maksim92
@maksim92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
После считывания из базы декодируем
Перед сохранением в базу закодируем

Работа с формой: https://github.com/Myks92/vmc-event/tree/master/sr...
Ответ написан
Ваш ответ на вопрос

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

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