Symfony entityManager findBy () Ошибка - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь отобразить только активные объявления в моем представлении, но я получаю сообщение об ошибке:

Невозможно угадать, как получить экземпляр Doctrine из информации запроса для параметра "advert".

Когда я показываю все объявления, нет проблем:

/**
 * @Route("/", name="advert_index")
 *
 * @return Response
 */
public function indexAction()
{
    $entityManager = $this->getDoctrine()->getManager();
    $adverts = $entityManager->getRepository(Advert::class)->findAll();

    return $this->render("Advert/index.html.twig", ["adverts" => $adverts]);
}

Но когда я пытаюсь отображать только активные объявления, я кодировал:

/**
 * @Route("/", name="advert_index")
 *
 * @param Advert $advert
 * @return Response
 */
public function indexAction(Advert $advert)
{
    $entityManager = $this->getDoctrine()->getManager();

    $adverts = $entityManager->getRepository(Advert::class)->findBy(["status" => $advert->getStatus() === Advert::STATUS_ACTIVE]);
    $adverts = $entityManager->getRepository(Advert::class)->findBy([$advert->getStatus() === Advert::STATUS_ACTIVE]);
    $adverts = $entityManager->getRepository(Advert::class)->findBy($advert->getStatus() === Advert::STATUS_ACTIVE);

    return $this->render("Advert/index.html.twig", ["adverts" => $adverts]);
}

Это 3 способа, которые я попробовал. Но это не работает. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 01 мая 2018

Ваша проблема - подпись метода для вашего действия:

public function indexAction(Advert $advert)

Doctrine ParamConverter пытается получить рекламу для вас, но поскольку в самом маршруте нет {id}, конвертер не может определить, какую рекламу загрузить.

Так как вы не хотите, чтобы одно конкретное объявление удаляло параметр, все будет в порядке:

public function indexAction() 
{
    ...
}

Тогда вы можете изменить свой метод findBy на следующий:

findBy(['status' => Advert::STATUS_ACTIVE]);

Это должно дать вам все активные объявления.

...