我正在从Symfony 3.4.x迁移到5.4.x。我从一个新的Symfony Flex项目开始,并将所有配置和我的捆绑包复制/移动到新的安装中。
除了从细枝模板链接到控制器动作时的自动变换外,所有操作都正常工作。
我的(简化)控制器操作:
/**
* 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());
...
}
链接到此操作的My 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>
...
渲染的一切工作正常,但当我点击链接的id没有转换/转换为域实体导致以下错误:
我的\Bundle\Controller\SiteController的参数1::singleAction()必须是我的\Bundle\Entity\Domains的示例,字符串给定,在/var/www/websites//vendor/symfony/http-kernel/HttpKernel. php行163调用
我已经尝试寻找丢失的包或配置,但无法找到自动转换不适用于实体的原因。
先谢谢你了!
1条答案
按热度按时间kt06eoxx1#
非常感谢@DarkBee为我指明了正确的方向。显然,这只适用于安装SensioFrameworkExtraBundle。
转换是自动添加的,因为包中包含@ParamConverter
更新:Symfony 6.2将添加此功能,6.2之前的版本必须安装SensioFrameworkExtraBundle