FlashHelper 提供了一种渲染 flash 消息的方式,这些 flash 消息是在 $_SESSION
中由 FlashComponent 设置的。 FlashComponent 和 FlashHelper 主要使用元素来渲染 flash 消息。Flash 元素位于 templates/element/flash 目录下。您会注意到 CakePHP 的 App 模板附带了三个 flash 元素:success.php、default.php 和 error.php。
要渲染 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 元素存储在 templates/{Prefix}/element/flash 中。这样,您就可以为应用程序的每个部分使用特定的消息布局。例如,使用不同的布局来区分您的前端和管理部分。
FlashHelper 使用普通的元素来渲染消息,因此会遵守您可能指定的任何主题。因此,当您的主题包含 templates/element/flash/error.php 文件时,它将被使用,就像使用任何元素和视图一样。