我试图在我的视图中仅显示有效广告,但我收到错误:
无法猜测如何从参数“advert”的请求信息中获取Doctrine实例。
当我显示所有广告时,没有问题:
/**
* @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种方法。但它不起作用。有人可以帮帮我吗?
答案 0 :(得分:2)
您的问题是您的操作的方法签名:
public function indexAction(Advert $advert)
Doctrine ParamConverter尝试为您抓取广告,但由于路线本身没有{id}
,转换器无法识别要加载的广告。
由于您不希望删除参数的特定广告应该没问题:
public function indexAction()
{
...
}
然后你可以将你的findBy方法改为:
findBy(['status' => Advert::STATUS_ACTIVE]);
这应该会为您提供所有有效的广告。