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

问题描述 投票:0回答:0

我正在从 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 行

我试过寻找丢失的包或配置,但找不到为什么自动转换对实体不起作用。

提前致谢!

symfony object doctrine twig entity
© www.soinside.com 2019 - 2024. All rights reserved.