gpt4 book ai didi

php - 是否可以在 Flash 消息中添加链接?

转载 作者:行者123 更新时间:2023-12-03 02:55:40 24 4
gpt4 key购买 nike

在我的 Symfony Controller 中,我通过 FlashBag 提供错误消息,如下所示:

$this->get('session')->getFlashBag()->add('error', 'The code you provided didn\'t match what we expected.');

这呈现了预期的输出,我可以添加链接吗?所以我可以输出如下消息:

The code you provided doesn't match what we expected, if you have continued trouble, consider looking into common problems and how to solve them.

我已经尝试使用 markdown 和 HTML 语法添加它,但两者都不起作用,the documentation on the feature没有说明是否可能,并且目前没有关于 SO 的问题来解决这个问题。

最佳答案

您还可以创建 Twig\Markup ,而不是在一个实例中手动创建安全字符串,然后对所有 Flash 消息使用 raw 过滤器。对象(参见例如 thisthis StackOverflow 答案)并将其放入 flash 包中。

(下面的代码是 Chris 答案的扩展。)

不好:使用raw,这适用于所有 Flash 消息

// PHP Controller
$newPageUrl = $this->generateUrl('core_page_id', ['id' => $page->getId()]);
$this->addFlash('success',
sprintf('Page updated! <a href="%s">View page</a>', $newPageUrl)
);
<!-- your Twig template -->
{% for message in app.flashes('success') %}
<div class="flash-notice alert alert-success"><i class="fa fa-check"></i> {{ message|raw }}</div>
{% endfor %}

更好:使用Twig\Markup

这种方法通常不会规避 Twig 的转义机制并且它允许更清晰地分离 Controller 逻辑和模板设计。

PHP 代码中没有构建 HTML 标记:

// PHP Controller

public function yourAction() {
// ...

$message = new Twig\Markup(
$this->renderView('flashes/page_update.html.twig', ['page' => $page]),
'UTF-8'
);
$this->addFlash('success', $message);

// With Symfony 4.x,
// the argument $message of method `addFlash` is type-hinted
// as `string`. You need to get to the session directly, e.g.
// by injecting `SessionInterface $session` into the method
// and then call:
// $session->getFlashBag()->add('success', $message);
}

您可以将您熟悉和喜爱的所有 Twig 功能用于 Flash 消息:

<!-- flashes/page_update.html.twig -->
Page updated! <a href="{{ path('core_page_id', {id:page.id}) }}">View page</a>

基本模板保留了干净的消息显示逻辑,并且自动转义仍然存在:

<!-- your Twig template -->
{% for message in app.flashes('success') %}
<div class="flash-notice alert alert-success"><i class="fa fa-check"></i> {{ message }}</div>
{% endfor %}

关于php - 是否可以在 Flash 消息中添加链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32845804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com