Я хочу создать простое приложение, которое отображает группу изображений (баннеров), а когда страница перезагружается - она должна отображать другую группу изображений ,Laravel Sessions: на странице reload (refresh) отобразить другую группу изображений
Каждое изображение имеет свойство order
, которое является целым числом. Например, когда вы впервые открываете домашнюю страницу, должны отображаться три изображения с order
значениями в [1, 3, 5]. После перезагрузки страницы должны отображаться изображения с order
значениями в [2, 4, 6]. И если вы снова откроете страницу - тогда изображения с order
значениями в [1, 3, 5] должны быть отображены снова. И так далее ...
Так, в основном, изображения с order
значениями в [1, 3, 5] и [2, 4, 6] следует переключить на каждой перезагрузки страницы.
В моем контроллере я попытался следующим:
public function index() {
if (!\Session::has('top_order')) {
$top_banners = TopBanner::where('position', 'top')
->whereIn('order', [1, 3, 5])
->orderBy('order')
->get();
\Session::put('top_order', [2, 4, 6]);
} else {
$next_orders = \Session::get('top_order');
$top_banners = TopBanner::where('position', 'top')
->whereIn('order', $next_orders)
->orderBy('order')
->get();
if ($next_orders[0] == 1) {
for ($i = 0; $i < count($next_orders); $i++) {
$next_orders[$i]++;
}
} else {
for ($i = 0; $i < count($next_orders); $i++) {
$next_orders[$i]--;
}
}
\Session::put('top_order', $next_orders);
}
return view('welcome')->with('top_banners', $top_banners);
}
Но по какой-то причине, изображения не переключаются. Как вы можете видеть в блоке else, когда страница перезагружается (когда отправляется HTTP-запрос и выполняется метод index
в контроллере) - сначала я получаю из сеанса 'top_order'
следующую группу изображений, которые должны отображаться:
$next_orders = \Session::get('top_order');
... а затем я хочу обновить сеанс 'top_order'
- я хочу установить его значение для другой группы заказов. Таким образом, если текущее значение сессии 'top_order'
является [1, 3, 5] - затем обновить его до [2, 4, 6]:
if ($next_orders[0] == 1) {
for ($i = 0; $i < count($next_orders); $i++) {
$next_orders[$i]++;
}
}
... и если текущее значение из сеанса 'top_order'
является [2, 4, 6] - затем обновить его [1, 3, 5]:
else {
for ($i = 0; $i < count($next_orders); $i++) {
$next_orders[$i]--;
}
}
Наконец, за исключением:
\Session::put('top_order', $next_orders);
Но это не работает, и я не вижу, что я делаю неправильно. Как только сеанс 'top_order'
установлен в [2, 4, 6] - он останется там, только эта группа изображений будет отображаться независимо от того, сколько раз я обновляю страницу.
Вы можете очистить свой код alot – xhulio