我想呈现我的Twig产品页面和它的url-slug。我的控制器:
* @Route("/item/{id}", name="app_showitem_getid", requirements={"id": "\d+"})
* @param int $id
* @return Response
* @throws \Doctrine\ORM\NonUniqueResultException
public function getid(int $id):Response
{
$repository = $this->getDoctrine()->getRepository(Item::class);
$item = $repository->findBy($id);
return $this->render("item/prodpage.html.twig", ["items"=>$item]);
}和
* @Route("/item/{slug}", name="app_showslug_getslug")
* @return Response
* @throws \Doctrine\ORM\NonUniqueResultException
public function getslug(string $slug)
{
$em = $this->getDoctrine()->getManager();
$repository = $em->getRepository(Item::class);
$itemSlug = $repository->findBy(["slug"=>$slug]);
$this->generateUrl('app_showslug_getslug', [array("slug"=> array($itemSlug))],UrlGeneratorInterface::ABSOLUTE_URL);
}文件routes.yaml:
app_item_getid:
path:/item/{id}
controller: App\Controller\ShowitemController::getid
requirements:
id:'\d+'我的template.html.twig文档:
{% for item in items%}
-->This link target the product-page:
"{{ path('app_showitem_getid', {'id': item.id}) }}"
{% endfor%}我如何生成一个通过id和它的插件来定位商品的产品页面的template.twig?我不能正确地呈现产品页面,因为它抛出“参数缺失”错误,但它的插件在那里,在url中!遗漏了什么?
发布于 2018-04-26 21:16:46
我想在这里:
public function getid(int $id):Response
{
***********************************
$item = $repository->find($id);
***********************************
}发布于 2018-04-26 21:57:04
如果getid($id)是控制器操作,它看起来来自上面的@Route注释,那么您可以让框架自动从数据库中获取item实体,如果它是唯一的。
public function getIdAction(Item $id)
{
var_dump($id); // $id instanceof Item::class
// with $id->getId() or $id->id (if public), etc.
}如果id或$slug是唯一的,您还可以使用-findOneBy(...)来获取单个条目,而不是只包含1个条目的数组。
https://stackoverflow.com/questions/50043641
复制相似问题