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
在控制器函数中,我将数组传递给树枝渲染器:
/**
* @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