Я написал что-то, что определяет, содержит ли страница якорь, на который была нажата кнопка, а если нет, переходит на обычную страницу, иначе она прокручивается до определенного раздела:
$('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;
});
});
Вы можете использовать Yii::$app->request->referrer
, который возвращает последнюю страницу, на которой был пользователь.
Использование простое:
return $this->redirect(Yii::$app->request->referrer);
Также необходимо учитывать, что referrer
может быть null
:
return $this->redirect(Yii::$app->request->referrer ?: Yii::$app->homeUrl);
См. документы . .
Это правда, что говорит @Kostas, но я думаю, что было бы лучше, если бы вы просто написали следующее, потому что goBack учитывает нулевой параметр, который уже есть в goBack HOME.
return $this->goBack(Yii::$app->request->referrer);
Я проверил это, и он отлично работает.
Здесь говорится, что хорошей практикой является проверка, установлен ли referrer
на первое место. Поэтому, если вы используете следующий код, вы будете перенаправлены на последнюю страницу, если задан реферер, или на настроенный вами homeUrl
, если обратный URL не был задан ранее.
return $this->goBack((!empty(Yii::$app->request->referrer) ? Yii::$app->request->referrer : null));