symfony - Symfony 4 - 在路由中使用简单的实体注入器
问题描述
使用 Symfony 4.0,我尝试使用我的路由注入我的实体。
这是我的控制器:
/**
* @param TblResidence $tblResidence
* @return \Symfony\Component\HttpFoundation\Response
* @Route("/residences/{res_id}", name="residences_view")
*/
public function view(TblResidence $tblResidence)
{
return $this->render('residences/view.html.twig', [
'residence' => $tblResidence,
]);
}
这是我的实体:
/**
* TblResidence
*
* @ORM\Table(name="tbl_residence", indexes={@ORM\Index(name="syn_id", columns={"syn_id"}), @ORM\Index(name="uti_id_crea", columns={"uti_id_crea"}), @ORM\Index(name="uti_id_maj", columns={"uti_id_maj"}), @ORM\Index(name="exp_id", columns={"exp_id"}), @ORM\Index(name="res_code", columns={"res_code"}), @ORM\Index(name="mar_id", columns={"mar_id"}), @ORM\Index(name="not_id", columns={"not_id"}), @ORM\Index(name="seg_id", columns={"seg_id"})})
* @ORM\Entity
*/
class TblResidence
{
/**
* @var int
*
* @ORM\Column(name="res_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $resId;
....
现在我得到了这个错误:
控制器“App\Controller\ResidencesController::view()”要求您为“$tblResidence”参数提供一个值。参数可以为空并且没有提供空值,没有提供默认值,或者因为在此参数之后有一个非可选参数。
我认为我不需要使用 ParamConverter(老实说,我没有找到关于它的 SF4 文档),因为我只想使用 ID 进行匹配。我试过resId
,作为参数名称id
,res_id
仍然是同样的错误。
我会错过什么吗(是的,我当然会)?
编辑
我从 composer 安装了这个包:
composer require sensio/framework-extra-bundle
现在它可以工作了,ParamConverter 似乎依赖于这个包。
更多信息:https ://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/index.html
解决方案
您的参数必须像您的实体一样被称为 resId。如果您想使用不同的名称,则必须明确使用 @ParamConverter 注释:https ://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/converters.html#doctrine-converter
/**
* @param TblResidence $tblResidence
* @return \Symfony\Component\HttpFoundation\Response
* @Route("/residences/{resId}", name="residences_view")
*/
public function view(TblResidence $tblResidence = null)
{
return $this->render('residences/view.html.twig', [
'residence' => $tblResidence,
]);
}
推荐阅读
- python - DataFrame中的累积除法
- python - Docker 上的 H2O 多核初始化
- python - 通过从现有列中过滤来创建新变量
- c# - 创建嵌套子 JSON
- python - 如何使用 Python Selenium 抓取隐藏的选择元素
- javascript - 如何在按钮的帮助下使用 html、css 和 javascript 重定向网页
- google-apps-script - 打开 Google 表格时,如何激活 column1 中的第一个空单元格?
- azure - 如何从 Azure 服务总线队列中删除/清除活动/死信消息?
- c#-4.0 - 将 JSON 反序列化为 C# 模型时出现问题
- php - 在 Codeigniter 中使用 Bootsrap 模式添加项目