我正在从 Symfony 3.4.x 迁移到 5.4.x。我从一个新的 Symfony Flex 项目开始,并将所有配置和我的包复制/移动到新安装。
一切正常,除了从 Twig 模板链接到控制器操作时的自动转换。
我的(简化的)控制器动作:
/**
* Single view for a site
*
* @Route("/Site/Single/{domain}", name="site_single")
* @param Domains $domain
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function singleAction(Domains $domain, Request $request)
{
$report = $request->query->has('action') && $request->query->get('action') === 'report';
$extensionsOnDomain = $this->getDoctrine()
->getRepository(Versions::class)
->findExtensionsOnDomain($domain->getId());
...
}
链接到此操作的我的 Twig 模板:
{% for domain in domains %}
<tr>
<td>
<a href="{{ path('site_single', {'domain': domain.id}) }}">
{% if domain.domainalias %} {{ domain.domainalias }} {% else %} {{ domain.domainname }} {% endif %}
</a>
</td>
...
everyrthing 的渲染效果很好,但是当我单击链接时,id 没有转换/转换为域实体,导致以下错误:
传递给 My\Bundle\Controller\SiteController::singleAction() 的参数 1 必须是 My\Bundle\Entity\Domains 的实例,给定的字符串,在 /var/www/websites//vendor/symfony/http-kernel 中调用/HttpKernel.php 第 163 行
我试过寻找丢失的包或配置,但找不到为什么自动转换对实体不起作用。
提前致谢!