Yii2 перенаправить на предыдущую страницу

Я написал что-то, что определяет, содержит ли страница якорь, на который была нажата кнопка, а если нет, переходит на обычную страницу, иначе она прокручивается до определенного раздела:

$('a[href*=\\#]').on('click',function(e) {

    var target = this.hash;
    var $target = $(target);
    console.log(targetname);
    var targetname = target.slice(1, target.length);

    if(document.getElementById(targetname) != null) {
         e.preventDefault();
    }
    $('html, body').stop().animate({
        'scrollTop': $target.offset().top-120 //or the height of your fixed navigation 

    }, 900, 'swing', function () {
        window.location.hash = target;
  });
});
29
задан arogachev 17 February 2015 в 04:32
поделиться

3 ответа

Вы можете использовать Yii::$app->request->referrer, который возвращает последнюю страницу, на которой был пользователь.

Использование простое:

return $this->redirect(Yii::$app->request->referrer);

Также необходимо учитывать, что referrer может быть null:

return $this->redirect(Yii::$app->request->referrer ?: Yii::$app->homeUrl);

См. документы . .

99
ответ дан deacs 17 February 2015 в 04:32
поделиться

Это правда, что говорит @Kostas, но я думаю, что было бы лучше, если бы вы просто написали следующее, потому что goBack учитывает нулевой параметр, который уже есть в goBack HOME.

return $this->goBack(Yii::$app->request->referrer);

Я проверил это, и он отлично работает.

1
ответ дан daniroyo 17 February 2015 в 04:32
поделиться

Здесь говорится, что хорошей практикой является проверка, установлен ли referrer на первое место. Поэтому, если вы используете следующий код, вы будете перенаправлены на последнюю страницу, если задан реферер, или на настроенный вами homeUrl, если обратный URL не был задан ранее.

return $this->goBack((!empty(Yii::$app->request->referrer) ? Yii::$app->request->referrer : null));

goBack () подробности

сведения о перенаправлении

9
ответ дан Kostas Mitsarakis 17 February 2015 в 04:32
поделиться
Другие вопросы по тегам:

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