За последние 24 часа нас посетили 22859 программистов и 1223 робота. Сейчас ищут 718 программистов ...

yii2 json

Тема в разделе "Yii", создана пользователем aza, 7 авг 2018.

  1. aza

    aza Новичок

    С нами с:
    7 мар 2018
    Сообщения:
    7
    Симпатии:
    0
    Приветствую,проблема такова:
    Реализовал передачу json ошибки валидации:
    PHP:
    1.  $model=new RegForm();
    2.         if(Yii::$app->getRequest()->post('reg') && Yii::$app->getRequest()->getIsAjax())
    3.         {
    4.             if (!$model->validate())
    5.             {
    6.                 Yii::$app->response->format = Response::FORMAT_JSON;
    7.                 return $this->asJson([
    8.                     'success' => true,
    9.                     'message' => $model->errors,
    10.                 ]);
    11.             }
    12.             else
    13.                 {
    14.                ///registr
    15.             }
    16.         }
    Как бе все передает,НО не так хорошо было.
    Первое,как преобразовать объект из массивов в строку,чтобы не было на фронте такой каши :
    Щас:
    {"name":["Необходимо заполнить «Name»."],"login":["Необходимо заполнить «Login»."],"email":["Необходимо заполнить «Email»."],"password":["Необходимо заполнить «Password»."],"password_repeat":["Необходимо заполнить «Password Repeat»."]}
    Надо:
    Необходимо заполнить «Name».
    Необходимо заполнить «Email»
    И тд.
    Второе,почему ошибки не обновляются,даже если исправил.(Если в activeForm добавить в шаблон {error} ,то все норм.)

    Код (Javascript):
    1. $(document).on('click', '#mdl-snackbar', function(event) {
    2.     event.preventDefault();
    3.     let snackbarContainer = document.querySelector('#demo-snackbar-example');
    4.     $.post(
    5.         document.location.href,
    6.         {reg: 1}
    7.     ).done(function(response) {
    8.         if (response.success) {
    9.             console.log(response.message);
    10.             let data = {
    11.                 message: JSON.stringify(response.message),
    12.                 timeout: 10000,
    13.                 actionText: 'Undo'
    14.             };
    15.             snackbarContainer.MaterialSnackbar.showSnackbar(data);
    16.         }
    17.     });
    18. })
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
  3. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Не очень понятно как надо. Наугад, надо так {key: 'string', ...} ?

    JSON.stringify - объект в строку
    JSON.parse - строку json в объект json

    или

    Код (Javascript):
    1. $.post(url, {},
    2. 'json') // Тип ожидаемых данных