Пользователь заходит на страницу, выбирает нужные ему категории.
Назовем их, 100, 200, 300 и тд для удобства.
В категориях есть заголовки, привязанные к категориям - назовем их 1, 10 у 100, 2 и 20 у 200 и 3, 30 у 300. - ну тут все логично.
Пользователь может выбрать любую категорию с помощью checkox. Все или только одну.
При выборе нажимает "дальше", но заголовки материала не выводятся.
То есть метод post работает, а передача данных через сессию нет.
Подскажите, в чем тут ошибка?
Контроллер
Код: Выделить всё
<?php
namespace app\controllers;
use app\models\FavoriteGame;
use app\models\GameCategory;
use app\models\GameText;
use Yii;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\web\Response;
class PapkaController extends Controller
{
public function actionIndex()
{
$categories = GameCategory::find()->all();
// Если форма отправлена и выбраны категории, сохраняем их в сессии
if (Yii::$app->request->isPost) {
$selectedCategories = Yii::$app->request->post('selectedCategories', []);
Yii::$app->session->set('selectedCategories', $selectedCategories);
}
return $this->render('index', ['categories' => $categories]);
}
public function actionStep1()
{
// Получаем выбранные категории из сессии
$selectedCategories = Yii::$app->session->get('selectedCategories', []);
// Получаем объекты категорий
$categories = GameCategory::findAll($selectedCategories);
// Получаем игры, принадлежащие выбранным категориям
$games = GameText::find()
->where(['category_id' => $selectedCategories])
->all();
var_dump(Yii::$app->request->post('selectedCategories'));
$selectedCategories = Yii::$app->session->get('selectedCategories');
var_dump($selectedCategories); // Проверьте, что здесь выводятся правильные ID категорий
return $this->render('step1', ['selectedCategories' => $categories, 'games' => $games]);
}
}
array(1) { [0]=> string(1) "2" } NULL
Представление:
Код: Выделить всё
<main class="main">
<div class="page-content pt-150 pb-150">
<div class="container">
<div class="row">
<div class="col-xl-8 col-lg-10 col-md-12 m-auto text-center">
<h1>Генерация папки вожатого - Шаг 2</h1>
<section id="section-selected-categories">
<h2>Выбранные категории и игры</h2>
<br>
<div id="selected-categories">
<?php
$count = 0;
foreach ($selectedCategories as $category):
if ($count % 6 === 0) {
// Начинаем новый ряд после каждых 6 элементов
echo '<div class="row">';
}
?>
<div class="col-md-2">
<?= Html::encode($category->category_title) ?><br>
</div>
<?php
$count++;
if ($count % 6 === 0) {
// Закрываем ряд после каждых 6 элементов
echo '</div>';
}
endforeach;
?>
</div>
</section>
<section id="section-selected-games">
<h2>Игры:</h2>
<br>
<div id="selected-games-list">
<?php
$count = 0;
foreach ($games as $game):
if ($count % 6 === 0) {
// Начинаем новый ряд после каждых 6 элементов
echo '<div class="row">';
}
?>
<div class="col-md-2">
<label>
<?= Html::checkbox('selectedGames[]', false, ['value' => $game->id]) ?>
<?= Html::encode($game->title_text) ?>
</label><br>
</div>
<?php
$count++;
if ($count % 6 === 0) {
// Закрываем ряд после каждых 6 элементов
echo '</div>';
}
endforeach;
?>
</div>
</section>
<div class="row">
<div class="col-md-12 text-center">
<?= Html::a('Далее →', ['generator/step3'], ['class' => 'btn btn-primary']) ?>
</div>
</div>
</div>
</div>
</div>
</div>
</main>