PHP の使用や JS でのアラートのように、TWIG ファイルで $_GET パラメータを使用するにはどうすればよいですか。
URI-> ?comment=追加...
TWIGでは、
if($_GET['comment'] == "added"){
...echo '<script>alert("in TWIG file!");</script>';
}
PHP の使用や JS でのアラートのように、TWIG ファイルで $_GET パラメータを使用するにはどうすればよいですか。
URI-> ?comment=追加...
TWIGでは、
if($_GET['comment'] == "added"){
...echo '<script>alert("in TWIG file!");</script>';
}
本当に達成しようとしていることに応じて、確認メッセージを表示する "Symfony の方法" は "Flash Messages" を使用することです:
あなたのController.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=added で、コメントが追加されていないというエラーが発生した場合でも、ユーザーはアラートを受け取ります。