在一个CakePHP 1.2
应用程序中,我正在使用
<?php $session->flash();?>
输出诸如“记录已编辑”之类的消息。它工作得很好。
但是,我想添加一个名为“Dismiss”的链接,它将淡出消息。我知道如何构造链接,但我不知道如何插入到flas 消息的输出中。
flash 消息将自身包装在一个DIV tag
. 我想将我的关闭代码插入到该 div 中,但我不知道如何。
在一个CakePHP 1.2
应用程序中,我正在使用
<?php $session->flash();?>
输出诸如“记录已编辑”之类的消息。它工作得很好。
但是,我想添加一个名为“Dismiss”的链接,它将淡出消息。我知道如何构造链接,但我不知道如何插入到flas 消息的输出中。
flash 消息将自身包装在一个DIV tag
. 我想将我的关闭代码插入到该 div 中,但我不知道如何。
想通了:在您的布局文件夹中创建一个新布局:
layouts/message.ctp
在该布局中,包括输出内容的调用:
<?php echo $content_for_layout; ?>
然后在设置 flash 消息时,指定要使用的布局:
$this->Session->setFlash('Your record has been created! Wicked!','message');
您想使用setflash功能。如果您为 setflash 传递一个空字符串 $default 它不会将您的消息包装在 div 中,而是按原样存储。这样您就可以显示您想要的任何标记,或者正如 Justin 发布的那样,您可以使用另一个视图页面来显示您的消息,这样您就不会混合视图和控制器。
您可以使用 jQuery 实现此目的:
$(document).ready(function() {
$("#flashMessage").each(function() {
$close = $("<span class='close'>Close</span>");
$close.click(function () {
$(this).parent().hide("slow");
});
$(this).append($close);
});
});
你需要用一点 CSS 来美化它,但我相信你明白了。
默认的做法是在 /app/views/layouts 中创建一个 flash.ctp。这将覆盖您可以在 /cake/libs/view/layouts 中找到的默认 flash.ctp。所以你不需要使用额外的参数。
顺便说一句:这适用于所有 CakePHP 标准视图和布局。