Flash

class Cake\View\Helper\FlashHelper(View $view, array $config = [])

FlashHelper 提供了一种渲染 flash 消息的方式,这些 flash 消息是在 $_SESSION 中由 FlashComponent 设置的。 FlashComponent 和 FlashHelper 主要使用元素来渲染 flash 消息。Flash 元素位于 templates/element/flash 目录下。您会注意到 CakePHP 的 App 模板附带了三个 flash 元素:success.phpdefault.phperror.php

渲染 Flash 消息

要渲染 flash 消息,您只需在模板文件中使用 FlashHelper 的 render() 方法即可

<?= $this->Flash->render() ?>

默认情况下,CakePHP 在会话中使用“flash”键来存储 flash 消息。但是,如果您在 FlashComponent 中设置 flash 消息时指定了键,则可以指定要渲染的 flash 键

<?= $this->Flash->render('other') ?>

您还可以覆盖在 FlashComponent 中设置的任何选项

// In your Controller
$this->Flash->set('The user has been saved.', [
    'element' => 'success'
]);

// In your template file: Will use great_success.php instead of success.php
<?= $this->Flash->render('flash', [
    'element' => 'great_success'
]);

// In your template file: the flashy element file from the Company Plugin
<?= $this->Flash->render('flash', [
    'element' => 'Company.flashy'
]);

注意

在构建自定义 flash 消息模板时,请确保正确地对任何用户数据进行 HTML 编码。CakePHP 不会为您转义 flash 消息参数。

有关可用数组选项的更多信息,请参阅 FlashComponent 部分。

路由前缀和 Flash 消息

如果您配置了路由前缀,现在可以将您的 Flash 元素存储在 templates/{Prefix}/element/flash 中。这样,您就可以为应用程序的每个部分使用特定的消息布局。例如,使用不同的布局来区分您的前端和管理部分。

Flash 消息和主题

FlashHelper 使用普通的元素来渲染消息,因此会遵守您可能指定的任何主题。因此,当您的主题包含 templates/element/flash/error.php 文件时,它将被使用,就像使用任何元素和视图一样。