@baetov

Как положить данные из формы в сессию а потом из сессии в форму?

Здравствуйте,подскажите пожалуйста.
Значит у меня есть вкладка статьи,при добавлении открывается модальное окно
spoiler
5fd8c86c465ef908139589.png

для удобства чтобы не прыгать по страницам я добавил кнопку "плюсик" чтобы прямо отсюда вызывать group/create.
вот код кнопки с формы article/_form
<div class="col-md-1">
            <?= Html::a('<span class="fa fa-plus"></span>', [
                    '/group/create',
                    'caller' => '/article/create',
                 ], [
                        'role'=>'modal-remote',
                        'title'=> 'Добавить группу',
                        'class' => 'btn btn-default btn-block',
                ]);?>

        </div>

при нажатии значит у меня открывается модалка групп,после сохранения я получаю окно об успешном сохранении
spoiler
5fd8ca3097b49684448475.png

вот код с контроллера группы
if ($model->load($request->post()) && $model->save()) {
                   if (!$caller){
                       return [
                           'forceReload' => '#crud-datatable-pjax',
                           'size' => 'md',
                           'title' => "Создание новой группы",
                           'content' => '<span class="text-success">Группа добавлена</span>',
                           'footer' => Html::button('Закрыть',
                                   ['class' => 'btn btn-default pull-left', 'data-dismiss' => "modal"]) .
                               Html::a('Создать ещё', ['create'],
                                   ['class' => 'btn btn-primary', 'role' => 'modal-remote'])


                       ];
                   }else{
                       return [
                           'forceReload' => '#crud-datatable-pjax',
                           'size' => 'md',
                           'title' => "Создание новой группы",
                           'content' => '<span class="text-success">Группа добавлена</span>',
                           'footer' => Html::a('Вернуться', [$caller],
                                   ['class' => 'btn btn-primary', 'role' => 'modal-remote'])


                       ];
                   }

при вызове я передаю в пременной caller экшн откуда вызвали
$caller = $request->get('caller');
и возвращаюсь обратно на article/create
но данные которые я заполнял до нажатия кнопки я теряю при возвращении
вот хотел бы их сохранить в сессию подскажите как сделать это
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
Т.к. отправка ajax'ом, то можно просто не перезагружать страницу, js/jquery:
$('form.article').on('submit', function (event) {
   event.preventDefault();
   let form = $(this);
   $.post(form.attr('action'), form.serialize(), function (response) {...});
});


По поводу хранения в сессии: преобразуем данные в строку и сохраняем штатными средствами $_SESSION['form'] = json_encode($_POST);, ну и потом обратный процесс
$_POST = json_decode($_SESSION['form'] ?? '{}', true);
.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽