用树枝生的树枝 (2)
Posted
技术标签:
【中文标题】用树枝生的树枝 (2)【英文标题】:Twig raw with twig (2) 【发布时间】:2022-01-02 01:42:34 【问题描述】:我有与set-default-raw-filter-in-twig 和twig-raw-with-twig 类似的问题,但方式不同。 我使用数据库的两个表。
第一个 edition
包含 DateTime 格式的日期,用作我们比赛的截止日期。
在这里,属性dateouverturesite
的值是2021-05-08 00:00:00
第二个,odpf_article
包含要在我的渲染中使用的文本。那是用 html 标记格式化的文本。
在其中一个文本中,我希望显示第一个表格中的日期。我试图将这些引用作为 Twig 变量:Twig in Twig!
我在 Symfony 控制器中的功能:
public function concours(Request $request,$choix): \Symfony\Component\HttpFoundation\Response
$edition = $this->session->get('edition');
$repo2=$this->getDoctrine()->getRepository(OdpfArticle::class);
$article=$repo2->findOneBy(['choix'=>$choix]);
$texte=$article->getTexte();
$tab=[ 'choix'=>$choix,
'texte'=>$texte,
'edition'=>$edition ];
return $this->render('core/odpf-concours.html.twig', $tab);
texte
属性中的一些行
<p><strong>PHASE D’INSCRIPTION</strong></p>
<ul>
<li> ouverture des inscriptions :app.session.get('edition').date_ouverture_site </li>
<li>app.session.get('edition').date_cloture_inscriptions
<span style="color: red;"><strong>(heure de Paris)</strong></span>
: clôture des inscriptions
</li>
</ul>
渲染的线条:
<div class ="contenu">
texte|escape('html')
</div>
或者使用原始过滤器:
<div class ="contenu">
texte|raw
</div>
最终结果(两个过滤器相同:
**PHASE D’INSCRIPTION**
ouverture des inscriptions : app.session.get('edition').dateouverturesite
**(heure de Paris)**
我的问题是:如何编写我的 Twig 变量?
我有十个不同的日期要显示在同一个texte
中,还有一个过滤器要应用以仅显示月份和日期...
我对 DarkBee 提供的链接的回答是:
-
我把线路改成了
include(template_from_string(texte))
例外是:Object of class DateTime could not be converted to string
所以,我写了我的模板行date(app.session.get('edition').dateouverturesite)
我也有同样的例外...
【问题讨论】:
所以你有twig
存储在数据库中?
@DarkBee :我的数据库中包含 HTML 和 Twig 变量的混合内容:PHASE D'INSCRIPTION
ouverture des inscriptions :app.session.get('edition').date_ouverture_site app.session.get('edition').date_cloture_inscriptions (heure de Paris) : clôture des inscriptions 这能回答你的问题吗? How to render Twig template from database in symfony2 @DarkBee 谢谢,但我已经尝试了几个小时来适应它,而且......没有改变! 那么请将问题更新为您所做的新尝试。还特别在我链接的问题中查看这个answer 【参考方案1】:您必须使用波浪号 "string" ~ var ~ "more string"
将变量与字符串连接
% set something = 'stuff' %
% set texte = '<ul>
<li> ouverture des inscriptions :' ~ something ~ '
</li>
</ul>' %
texte|raw
结果:
<ul>
<li> ouverture des inscriptions :stuff
</li>
</ul>
但是,我怀疑您真正想要做的是使用模板片段,尤其是在插入的值可能发生变化的情况下。
# src: _fragment.html.twig #
<ul>
<li> ouverture des inscriptions : app.session.get('edition').date_ouverture_site
</li>
</ul>
然后根据需要将它包含在任何你想要的地方
# src: main.html.twig #
<div>
<h1>The list:</h1>
include('_fragment.html.twig')
</div>
<div>
<h4>That list again:</h4>
include('_fragment.html.twig')
</div>
【讨论】:
如果你想将HTML
存储在一个变量中,使用% set var %...% endset %
- demo会更方便
@Arleigh Hix :这非常困难:我必须在同一文本中包含 10 个不同的日期(请参阅我对 DarkBee 评论的回答中的示例)以上是关于用树枝生的树枝 (2)的主要内容,如果未能解决你的问题,请参考以下文章