如何在TWIG文件中使用$ _GET params,如使用PHP和使用JS进行警报。
URI-> ?注释=加入...
在TWIG,
if($_GET['comment'] == "added"){
...echo '<script>alert("in TWIG file!");</script>';
}
答案 0 :(得分:11)
希望它会帮助你
{% if app.request.get('comment') == "added" %}
<script>alert("in TWIG file!");</script>
{% endif %}
答案 1 :(得分:1)
根据您真正想要实现的目标,显示确认消息的“Symfony方式”将是使用“Flash消息”:
YourController.php:
public function updateAction()
{
$form = $this->createForm(...);
$form->handleRequest($this->getRequest());
if ($form->isValid()) {
// do some sort of processing
$this->get('session')->getFlashBag()->add(
'notice',
'Your changes were saved!'
);
return $this->redirect($this->generateUrl(...));
}
return $this->render(...);
}
你的TwigTemplate.twig:
{% for flashMessage in app.session.flashbag.get('notice') %}
<div class="flash-notice">
{{ flashMessage }}
</div>
{% endfor %}
这样你就有很多好处:
请参阅此主题的official documentation。
答案 2 :(得分:0)
“正确”的解决方案是使用你的控制器为Twig提供一个函数,而不是打开查询字符串。这将更加强大并提供更好的安全性:
控制器:
function someAction()
{
$params = array('added' => false);
if( /* form logic post */ )
{
//some logic to define 'added'
$params['added'] = true;
}
$this->render('template_name', $params);
}
视图:
{% if added %}
<script>alert('added');</script>
{% endif %}
原因是这更安全(我无法通过浏览网址触发警报),它维护控制器中的所有业务逻辑,并且您还能够处理任何错误 - 例如如果您浏览到foo.php?comment = added并且出现错误而未添加评论,则用户仍会收到提醒。