Не могу вывести нужные данные через checkbox

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Boglik
Сообщения: 42
Зарегистрирован: 2018.10.16, 04:49

Не могу вывести нужные данные через checkbox

Сообщение Boglik »

Задача.
Пользователь заходит на страницу, выбирает нужные ему категории.
Назовем их, 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('Далее &rarr;', ['generator/step3'], ['class' => 'btn btn-primary']) ?>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</main>
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Не могу вывести нужные данные через checkbox

Сообщение unknownby »

Возможная проблема в самой сессии, нужно глянуть настройки сессии.
А ещё проверить сохраняется ли в сессии на странице Index данные в сессию
Ответить