Параметр "id" должен быть определен

Когда я пытаюсь получить доступ к своей подстранице, появляется эта ошибка

The parameter "id" must be defined.

> Symfony\Component\DependencyInjection\Exception\
InvalidArgumentException
in var/cache/dev/Container6do1xtb/appDevDebugProjectContainer.php (line 4787)
appDevDebugProjectContainer->getParameter('id')
in vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php (line 40)
Controller->getParameter('id')
in src/AppBundle/Controller/DefaultController.php (line 22)
//        $paginator->setItemCountPerPage(10);//        $this->view->paginator  = $paginator;    }    public function blogarticleAction(){        $this->view->blogarticle = \Pimcore\Model\DataObject\Blogpost::getById($this->getParameter("id"));    }}
DefaultController->blogarticleAction()
in vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php (line 151)
HttpKernel->handleRaw(object(Request), 1)
in vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php (line 68)
HttpKernel->handle(object(Request), 1, true)
in vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php (line 202)
Kernel->handle(object(Request))
in web/app.php (line 55)

Код, который я использовал для этого

default.html.php

<div class = "post-preview">
    <a href = "<?= $this->path('blogpost', [
                    'id' => $blogpost-> getId(),
                    'title' => $blogpost -> getTitle(),
            ]); ?>">

defaultcontroller.php

 public function blogarticleAction($id){
     $this->view->blogarticle = \Pimcore\Model\DataObject\Blogpost::getById($this->getParam("id"));
}

Настройка RegEx:

Параметр &quot;id&quot; должен быть определен

конечно, я создал blogarticle.html.php в той же папке, что и default.html.php

Похоже, в вашем контейнере нет параметра iddefined. На что ссылается id (в контроллере)?

Med 16.05.2018 14:34

Это относится к \ Pimcore \ Model \ DataObject \ Blogpost

Jhonny Dem 16.05.2018 14:54

Когда я пытаюсь перейти на страницу, автоматически отображается сгенерированный идентификатор 5

Jhonny Dem 16.05.2018 14:56
$this->getParameter("id") будет искать в контейнере параметр с именем id. Если это идентификатор записи в блоге, вы должны передать его как параметр действия.
Med 16.05.2018 14:57

Ага. Предполагая, что это обычное приложение Symfony (в чем я не уверен), тогда blogarticleAction ($ id) сработает.

Cerad 16.05.2018 14:58

Все тот же ... imgur.com/a/qSo2irJ

Jhonny Dem 16.05.2018 15:39

когда я проверил, что узнать GET с помощью var_dump ($ _ GET); умри(); он вернул массив (0) {}

Jhonny Dem 16.05.2018 15:50

Обновите код контроллера в своем вопросе. Связанное изображение по-прежнему показывает, что вы используете getParameter. symfony.com/doc/master/routing.html#creating-routes

Cerad 16.05.2018 16:08

Но когда я меняю getParam вместо getParameter, эта случайная ошибка выскакивает. Попытка вызвать неопределенный метод с именем «getParam» класса «AppBundle \ Controller \ DefaultController».

Jhonny Dem 16.05.2018 16:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
9
892
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте $id из действия, а не из контейнера

public function blogarticleAction($id){
     $this->view->blogarticle = \Pimcore\Model\DataObject\Blogpost::getById($id);
}

$this->getParam("id") Будет искать в контейнере параметр с именем id, который вам не нужен.

Вы должны прочитать https://symfony.com/doc/current/routing.html, который объясняет параметры маршрута.

Другие вопросы по теме