Symfony\Bridge\Twig\Extension\RoutingExtension::getPath() 中的参数错误

Errof of arguments in Symfony\Bridge\Twig\Extension\RoutingExtension::getPath()

在控制器函数中,我将数组传递给树枝渲染器:

        /**
        * @Route("/core/olympiades,{choix}", name="core_olympiades")
        */
        public function olympiades(Request $request,$choix)
        {

                $repo=$this->getDoctrine()->getRepository(OdpfArticle::class);

                $article=$repo->findOneBy(['choix'=>$choix]);

                $texte=$article->getTexte();

                $tab=[ 'choix'=>$choix, 'texte'=>$texte];

                //dd($tab);

                return $this->render('core/odpf-olympiades.html.twig', $tab);
        }

返回的异常说:

    Argument 2 passed to Symfony\Bridge\Twig\Extension\RoutingExtension::getPath() must be of the type array, string given

我的dd($tab);给

    CoreController.php on line 71:

    array:2 [▼

      "choix" => "c_est_quoi"

      "texte" => """

        <p>C'est un concours scientifique expérimental qui s'adresse à des équipes de deux à six lycéens encadrés par un ou deux professeur(s), en liaison éventuelle av ▶
                                <p>Les Olympiades de Physique France permettent à de petites équipes d'élèves de vivre pendant plusieurs mois une passionnante a ▶
                                <p>S'il est à dominante physique, le concours s’ouvre fréquemment sur les disciplines frontières (chimie, automatique, biologie) ▶
                                <p>Le projet peut prendre place dans le cadre d'un atelier scientifique, dans la préparation du Grand Oral ou dans le prolongeme ▶
                                <p>La finale est suivie d'une exposition publique des projets des élèves qui précède la remise des prix.</p>

        """

    ]

所以,我确定传递给渲染器的数组 ($tab) 是一个数组,而不是一个简单的字符串。在实体 class OdpfArticle 中,'texte' 被描述为 'blob'。 树枝渲染的开始是:

    {% extends "base.html.twig" %}

    {% block title %}
        C'est quoi - {{ parent() }}
    {% endblock %}

    {% block stylesheets %}
        {{  parent() }}
        <link rel="stylesheet" href="{{ asset('css/odpf-olympiades.css') }}">
    {% endblock %}

    {% block contenu %}
    <div id="wrapper">
        <div class="container bg-white">
        {% include 'core/menu-haut.html.twig' %}
    
        <div class="row  justify-content-around">
            <span class="site-logo"><a href="/"></a></span>
            <nav class="menu-ppal">
                <ul class="nav flex-column flex-md-row">
                    <li class="nav-item menu-ppal-text">
                        <a class="nav-link" href="#">Actus</a>
                    </li>
                    <li class="nav-item active  menu-ppal-text">
                        <a class="nav-link" href="{{ path('core_olympiades','c_est_quoi') }}">Les Olympiades de Physique France</a>
                    </li>
                    <li class="nav-item menu-ppal-text">
                        <a class="nav-link" href="#">Le Concours 2021-2022</a>
                    </li>
                    <li class="nav-item menu-ppal-text">
                        <a class="nav-link" href="#">Revivez les éditions passées</a>
                    </li>
                    <li class="nav-item menu-ppal-text pr-0">
                        <a class="nav-link" href="#">Partenaires</a>
                    </ul>
                    </nav>
                </div>

            <div class="row ">
                <div class="col-md-12 col-lg-8">
                    <h1 class="titre-ppal">
                        Les Olympiades <br>de Physique France
                    </h1>
                    <div class="row">
                        <div class="col-md-6 col-lg-4">
                            <div class="menugche">
                                <nav>
                                <ul class="nav flex-column">
                                    <li class="nav-item active"><a href="/" class="nav-link">C'est quoi ?</a></li>
                                    <li class="nav-item"><a href="#" class="nav-link">Comment ça se passe ?</a></li>
                                    <li class="nav-item"><a href="#" class="nav-link">Pourquoi participer ?</a></li>
                                    <li class="nav-item"><a href="#" class="nav-link">Les aides ?</a></li>
                                    <li class="nav-item"><a href="#" class="nav-link">Les récompenses ?</a></li>
                                    <li class="nav-item"><a href="#" class="nav-link">Qui organise ?</a></li>
                                    <li class="nav-item"><a href="#" class="nav-link">La presse en parle</a></li>
                                    <li class="nav-item"><a href="#" class="nav-link">Les vidéos</a></li>
                                </ul>
                                </nav>
                            </div>
                        </div>
                        {%if choix=='c_est_quoi' %}
                        <div class="col-md-6 col-lg-8">
                            <div class="col-centre">
                                <h2 class="sous-titre">C'est quoi ?</h2>
                                <div class="contenu">
                                    
                                </div>
                            </div>
                                </div>
                {% endif %}
                    </div>
                </div>

如果我从 <div class="row justify-content-around"> 评论到 </div>,错误不会出现(我的 menu-ppal 不再出现!)

认为 CSS 可能很重要,我在这里给出 <div> 部分的 css :

    @import url(http://fonts.googleapis.com/css?family=Oxygen:300,400,700);
    a {
        text-decoration: none;
        color:black;
    }
    .container {
        width:100%;
        padding-right: 15px;
        padding-left: 15px;
        margin-right: auto;
        margin-left: auto;
    }
    @media (min-width: 576px){
        .container {
            max-width: 540px;
        }
    }
    @media (min-width: 786px){
        .container {
            max-width: 720px;
        }
    }
    @media (min-width: 992px){
        .container {
            max-width: 960px;
        }
    }
    @media (min-width: 1200px){
        .container {
            max-width: 1140px;
        }
    }
    @media screen and (min-width: 751px) {
        .ppal-pages {
            position: absolute !important;
            padding: 0;
            z-index: 3;
        }
        .ppal-pages span.site-logo {
            background: url('../odpf-images/site-logo-285x75.png') #fff;
            width: 285px;
            height: 78px;
            position: relative;
            top: -16px;
            display: block;
        }
    }
    @media screen and (max-width: 750px) {
        .ppal-pages {
            z-index: 0;
        }
        .ppal-pages span.site-logo {
            background: url('../odpf-images/site-logo-285x75.png') #fff;
            width: 285px;
            height: 78px;
            position: relative;
            display: block;
        }
    }
    .menu-ppal {
        display: inline;
        line-height: 1;
        box-sizing: content-box;
    }
    .menu-ppal li {
        display: block;
        padding: 0 15px 0 0;
        box-sizing: content-box;
    }
    .menu-ppal-text a {
        display: inline;
        text-decoration: none;
        margin: 0;
        padding: 0;
        font-family: 'Oxygen', sans-serif;
        font-size: 16px;
        font-weight: 700;
        background: #d6dbdf;
        color: #111a21;
        text-align: center;
        text-transform: uppercase;
    }
    .menu-ppal-text a:active {
        background: #b1191d;
        color: #ffffff;
        cursor: default;
    }

    .menu-ppal-text a:hover {
        background: #111a21;
        color: #ffffff;
    }
    .menu-ppal-text li:last-child a {
        margin: 0;
    }
    .menu-ppal-text .active a,
    .menu-ppal-text .active a:hover {
        background: #b1191d;
        color: #ffffff;
        cursor: default;
    }

你必须更换这个

{{ path('core_olympiades','c_est_quoi') }}

由此

{{ path('core_olympiades', {'choix': 'c_est_quoi'}) }}

有关详细信息,这是路由文档中的示例: https://symfony.com/doc/current/routing.html#generating-urls-in-javascript