将关闭控件添加到CakePHP中的session-flash()输出中

时间:2020-03-06 14:40:17  来源:igfitidea点击:

CakePHP 1.2应用中,我正在使用

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

输出"记录已编辑"之类的消息。效果很好。

但是,我想添加一个名为" Dismiss"的链接,该链接将淡出该消息。我知道如何构造链接,但是我不知道如何插入flass消息的输出中。

即时消息将自身包装在" DIV标签"中。我想将解雇代码插入该div,但我不知道如何。

解决方案

想通了:
在布局文件夹中创建一个新的布局:

layouts/message.ctp

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

<?php echo $content_for_layout; ?>

然后,当我们设置即显消息时,指定要使用的布局:

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

我们要使用setflash功能。如果我们将setflash传递给$ default一个空字符串,它将不会将消息包装在div中,而是将其照原样存储。这样,我们可以显示所需的任何标记,或者如Justin发布的那样,可以在消息中使用另一个视图页面,这样就不会混淆视图和控制器。

默认的操作方法是在/ app / views / layouts中创建flash.ctp。这将覆盖我们在/ cake / libs / view / layouts中可以找到的默认flash.ctp。因此,我们无需使用其他参数。

顺便说一句:这适用于所有CakePHP标准视图和布局。

我们可以使用jQuery实现此目的:

$(document).ready(function() {

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

});

我们将需要使用一些CSS来完善它,但是我敢肯定想法。