symfony - 生成 slug 时 Twig 出错,缺少用于生成 URL 的参数(“slug”)
问题描述
我想呈现我的 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 及其 slug 生成以项目产品页面为目标的 template.twig?我无法正确呈现产品页面,因为它会引发“缺少参数”错误,但它的 slug 就在 url 中!少了什么东西 ?
解决方案
如果getid($id)
是控制器动作,它似乎来自@Route
它上面的评论,你可以让框架自动从数据库中获取项目实体,如果它是唯一的。
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 个项目的数组。
推荐阅读
- encoding - 从帕斯卡中的字符串中删除字符会导致控制台帕斯卡中的问号
- python - Python DataFrame - 根据同一数据框列中的值选择数据框行
- php - 我试图通过 filezilla (FTP) 更新 wordpress 版本
- javascript - 将函数传递给子组件是个好主意吗?
- windows - 程序安装程序如何检测到我的电子邮件 ID?
- r - 使用另一个数据框的条件创建一个新列
- flutter - 颤动问题底部溢出 61 像素//这是我的代码,请有人帮忙
- java - 如何从 jar 文件中加载图像?
- javascript - Vue.js:快速键入时不应用使用计算属性的输入格式
- c++ - 如何对向量内的行求和?