将解除控制添加到CakePHP中的session-flash()输出

时间:2008-09-24 15:54:12

标签: php cakephp cakephp-1.2

CakePHP 1.2应用中,我正在使用

<?php $session->flash();?>

输出“已编辑记录”等消息。它工作得很好。

但是,我想添加一个名为“Dismiss”的链接,它将淡出消息。我知道如何构建链接,但我不知道如何插入flass消息的输出。

Flash消息将自己包装在DIV tag中。我想将我的解雇代码插入该div,但我不知道如何。

4 个答案:

答案 0 :(得分:1)

想出来: 在layouts文件夹中创建一个新布局:

layouts/message.ctp

在该布局中,包括输出内容的调用:

<?php echo $content_for_layout; ?>

然后,当您设置flash消息时,请指定要使用的布局:

$this->Session->setFlash('Your record has been created! Wicked!','message');

答案 1 :(得分:1)

您想使用setflash功能。如果你传递setflash为$ default的空字符串,它将不会将你的消息包装在div中,只是按原样存储它。通过这种方式,您可以显示所需的任何标记,或者Justin发布后,您可以使用其他视图页面来显示消息,这样就不会混淆视图和控制器。

答案 2 :(得分:1)

您可以使用jQuery实现此目的:

$(document).ready(function() {

    $("#flashMessage").each(function() {
        $close = $("<span class='close'>Close</span>");
        $close.click(function () {
            $(this).parent().hide("slow");
        });
        $(this).append($close);
    });

});

你需要用一点CSS来完善它,但我相信你明白了。

答案 3 :(得分:0)

默认的方法是在/ app / views / layouts中创建flash.ctp。这将覆盖您可以在/ cake / libs / view / layouts中找到的默认flash.ctp。所以你不需要使用额外的参数。

btw:这适用于所有CakePHP标准视图和布局。