【发布时间】:2021-12-25 13:40:30
【问题描述】:
在控制器函数中,我将数组传递给树枝渲染:
/**
* @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) 是一个数组,而不是一个简单的字符串。在实体类 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> 发表评论,则不会出现错误(我的菜单伙伴也不会出现了!)
认为 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;
}
【问题讨论】:
-
@Route("/core/olympiades/{choix}", name="core_olympiades")不是@Route("/core/olympiades,{choix}", name="core_olympiades")?为什么 "texte" => 有三个双引号?!同样,为什么不使用自动装配?为什么不直接使用$this->render('core/odpf-olympiades.html.twig', ['choix'=>$choix,'texte=>$texte]); -
问题是由
href="{{ path('core_olympiades','c_est_quoi') }}"引起的,您提供的第二个参数是字符串而不是预期的数组。{{ path('core_olympiades', { 'choix': 'c_est_quoi' }) }} -
@bZezzz : {choix} 不是一条路线,而是一条可供选择的信息。三个双引号是Doctrine读取的blob的返回......?我不明白为什么...
-
@WillB。好的 !谢谢 !效果很好....