symfony 使用Twig的path()链接到控制器操作不会自动查找给定id的实体,字符串给定

f0ofjuux  于 2023-05-23  发布在  其他
关注(0)|答案(1)|浏览(157)

我正在从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调用
我已经尝试寻找丢失的包或配置,但无法找到自动转换不适用于实体的原因。
先谢谢你了!

kt06eoxx

kt06eoxx1#

非常感谢@DarkBee为我指明了正确的方向。显然,这只适用于安装SensioFrameworkExtraBundle
转换是自动添加的,因为包中包含@ParamConverter
更新:Symfony 6.2将添加此功能,6.2之前的版本必须安装SensioFrameworkExtraBundle

相关问题