Проблема с active form

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Kreng
Сообщения: 202
Зарегистрирован: 2017.02.16, 10:11

Проблема с active form

Сообщение Kreng »

Проблема с active form. В общем есть страница, на ней создание записи через форму и так уж получилось, что после успеш или неуспеш отправки формы я хочу чтоб страница перезагружалась. В случае ошибок всё нормально, а вот если сделать перезагрузку страницы через ctr+r в случае успеха, то он снова генерит запись. Надо бы как-то очищать post и flash переменную отправлять.

Пробывал редирект, он робит, но флеш не сохраняет. Пока мысль ток в сессию сохранять и в сообщении просто сразу очищать после вывода

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

           Yii::$app->session->setFlash('success', "Запись создана");
            $_POST = array();
           // Yii::$app->response->redirect( Url::toRoute(['file/page','idParent'=>$idParent]) );
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Проблема с active form

Сообщение vitalik1183 »

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

$this->refresh();
Yii2!
Kreng
Сообщения: 202
Зарегистрирован: 2017.02.16, 10:11

Re: Проблема с active form

Сообщение Kreng »

Так тоже флеш скидывает.
SergeyK
Сообщения: 26
Зарегистрирован: 2015.05.05, 14:02

Re: Проблема с active form

Сообщение SergeyK »

Kreng писал(а): 2017.08.31, 14:27 Так тоже флеш скидывает.
Использую refresh, флеш не сбрасывается после него.
Kreng
Сообщения: 202
Зарегистрирован: 2017.02.16, 10:11

Re: Проблема с active form

Сообщение Kreng »

Только что пробывал. Не видит он флеш. Оно в общем-то и понятно, флеш ведь переменная на 1 раз, вот она объявляется и сразу происходит перезагрузка, вот она и удаляется сразу.

Экшен

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

if ($model->load( $arr ) && $model->save()) {
            Yii::$app->session->setFlash('success', "Your message to display");
            $this->refresh();
        }
Вьюха

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

    <div class ="col-md-3 col-sm-3 col-xs-12">
                <?=  app\models\Page::pageMenu($parent->id) ?>
            </div>
Вьюха вьюхи

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

<?php
if (Yii::$app->session->hasFlash('success')): ?>
    <div class="alert alert-success alert-dismissable">
        <button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
        <h4><i class="icon fa fa-check"></i>Успех!</h4>
        <?= Yii::$app->session->getFlash('success') ?>
    </div>
<?php endif; ?>
SergeyK
Сообщения: 26
Зарегистрирован: 2015.05.05, 14:02

Re: Проблема с active form

Сообщение SergeyK »

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

    /**
     * Sets a flash message.
     * A flash message will be automatically deleted after it is accessed in a request and the deletion will happen
     * in the next request.
     * If there is already an existing flash message with the same key, it will be overwritten by the new one.
     * @param string $key the key identifying the flash message. Note that flash messages
     * and normal session variables share the same name space. If you have a normal
     * session variable using the same name, its value will be overwritten by this method.
     * @param mixed $value flash message
     * @param bool $removeAfterAccess whether the flash message should be automatically removed only if
     * it is accessed. If false, the flash message will be automatically removed after the next request,
     * regardless if it is accessed or not. If true (default value), the flash message will remain until after
     * it is accessed.
     * @see getFlash()
     * @see addFlash()
     * @see removeFlash()
     */
    public function setFlash($key, $value = true, $removeAfterAccess = true)
    {
        $counters = $this->get($this->flashParam, []);
        $counters[$key] = $removeAfterAccess ? -1 : 0;
        $_SESSION[$key] = $value;
        $_SESSION[$this->flashParam] = $counters;
    }

Попробуй указать третий параметр, хотя по умолчанию он true (т.е. флеш удалиться после обращения к нему).
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Проблема с active form

Сообщение urichalex »

Полный код экшена покажи
Kreng
Сообщения: 202
Зарегистрирован: 2017.02.16, 10:11

Re: Проблема с active form

Сообщение Kreng »

SergeyK, спасибо, работает.

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

Yii::$app->session->setFlash('success', "Запись создана",false);
Последний раз редактировалось Kreng 2017.09.01, 12:15, всего редактировалось 1 раз.
WalpeR
Сообщения: 64
Зарегистрирован: 2016.08.29, 17:21

Re: Проблема с active form

Сообщение WalpeR »

Разве просто rerurn refresh не подойдет? Компа под рукой нет, чтобы проверить
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Проблема с active form

Сообщение ElisDN »

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

return $this->refresh();
Ответить