Метод контроллера Symfony не распознающий переданный в переменной - PullRequest
1 голос
/ 25 июня 2019

Я передаю некоторые переменные в метод контроллера. Однако последний не распознается, даже если сброс переменной на стороне ветки подтверждает, что переменная не ноль.

Код контроллера

/**
     * @Route(name = "course_space_view", path="/courseSpace/{courseSpaceId}/about", methods={"GET", "POST"})
     *
     * @ParamConverter("courseSpace", class="AppBundle\Entity\CourseSpace")
     * @ParamConverter("listSettings", class="AppBundle\View\ListEnrollment\ListSettings", options={"activeTab" = ListSettings::ABOUT_TAB})
     *
     * @param ListSettings $listSettings
     * @param CourseSpace $courseSpace
     * @param bool $provisionalTerm
     *
     * @return  Response
     */
    public function viewCourseSpace(ListSettings $listSettings, CourseSpace $courseSpace, bool $provisionalTerm)
    {
        $this->denyAccessUnlessGranted(CourseSpaceVoter::READ, $courseSpace);

        return $this->render('/LandingPage/CourseSpaces/aboutCourseSpace.html.twig',
            [
                'courseSpace' => $courseSpace,
                'listSettings' => $listSettings
            ]
        );
    }

Шаблон Twig, который передает переменные

<a class="btn btn-sm btn-light"
   href="{{ path('course_space_view', {'courseSpaceId': tile.courseSpaceId, 'provisionalTerm': tile.term.provisionable}) }}">
     <span class="fas fa-cog mr-1"></span>
     Manage course space
</a>

1 Ответ

2 голосов
/ 25 июня 2019

Если вы не определили provisionalTerm в вашем пути маршрута, например:

path="/courseSpace/{courseSpaceId}/about/{provisionalTerm}"

Symfony добавит ваш параметр (и любой другой, не определенный в пути маршрута) в конец URL, например:

/ courseSpace / 116168444546 / about? ProvisionalTerm = 1

Тогда вы можете получить их из запроса.

/**
         * @Route(name = "course_space_view", path="/courseSpace/{courseSpaceId}/about", methods={"GET", "POST"})
         *
         * @ParamConverter("courseSpace", class="AppBundle\Entity\CourseSpace")
         * @ParamConverter("listSettings", class="AppBundle\View\ListEnrollment\ListSettings", options={"activeTab" = ListSettings::ABOUT_TAB})
         *
         * @param ListSettings $listSettings
         * @param CourseSpace $courseSpace
         * @param bool $provisionalTerm
         *
         * @return  Response
         */
        public function viewCourseSpace(Request $request, ListSettings $listSettings, CourseSpace $courseSpace)
        {
            $this->denyAccessUnlessGranted(CourseSpaceVoter::READ, $courseSpace);
            $provisionnalTerm = $request->query->get('provisionalTerm');
            return $this->render('/LandingPage/CourseSpaces/aboutCourseSpace.html.twig',
                [
                    'courseSpace' => $courseSpace,
                    'listSettings' => $listSettings
                ]
            );
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...