我如何在 TWIG 文件中使用 $_GET 参数,例如使用 PHP 和使用 JS 发出警报。
URI-> ?comment=添加...
在树枝中,
if($_GET['comment'] == "added"){
...echo '<script>alert("in TWIG file!");</script>';
}
我如何在 TWIG 文件中使用 $_GET 参数,例如使用 PHP 和使用 JS 发出警报。
URI-> ?comment=添加...
在树枝中,
if($_GET['comment'] == "added"){
...echo '<script>alert("in TWIG file!");</script>';
}
希望对你有帮助
{% if app.request.get('comment') == "added" %}
<script>alert("in TWIG file!");</script>
{% endif %}
根据您真正想要实现的目标,显示确认消息的“Symfony 方式”将是使用“Flash Messages”:
你的控制器.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 %}
这样你就有了多重优势:
请参阅有关此主题的官方文档。
“正确”的解决方案是使用您的控制器为 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 %}
原因是这样更安全(我不能通过浏览 url 来触发警报),它维护控制器中的所有业务逻辑,并且您还可以处理任何错误 - 例如,如果您浏览到 foo. php?comment=add 并且有一个错误,您的评论没有添加,用户仍然会收到警报。