CakePHP:setFlash()中的HTML

yjw*_*ong 2 php cakephp

我想知道是否有任何正确的方法在Session组件的setFlash()函数中包含HTML.

基本上我在电子商务网站上有这个管理界面,允许管理员创建和编辑网站上的"商店".保存"商店"后,我希望CakePHP显示"您的商店已成功保存.返回商店索引"."返回商店索引"将是一个链接.我目前正在使用普通的旧HTML,如:

$this->Session->setFlash("Shop has been successfully published. <a href=\"...\">Return to Shop Index</a>");
Run Code Online (Sandbox Code Playgroud)

工作,但它是控制器中的HTML,我认为这是一个"坏事".

谢谢!

编辑:

感谢@YonoRan提供解决方案.错过了CakePHP文档中的内容.这是我做的:

1)创建新元件session_flash_link.ctpapp/views/elements.

2)在以下代码中添加了以下代码session_flash_link.ctp:

<div id="flashMessage" class="message">
<?php
echo $message;
echo $this->Html->link($link_text, $link_url, array("escape" => false));
?>
</div>
Run Code Online (Sandbox Code Playgroud)

3)控制器代码:

$this->Session->setFlash("Shop has been successfully saved. ", "session_flash_link", array(
    "link_text" => "Return to Shop Management &raquo;",
    "link_url" => array(
        "controller" => "shops",
        "action" => "manage",
        "admin" => true
    )
));
Run Code Online (Sandbox Code Playgroud)

Yon*_*Ran 5

这可能是您尝试执行的操作的解决方案,它将"Layout"加载为其中的所有HTML作为setFlash消息. 自定义CakePHP flash消息

更新:

我刚刚查看了setFlash SetFlash手册的手册

它表明你可以指定和包含setFlash消息的HTML的元素+一堆其他属性.

setFlash($message, $element = 'default', $params = array(), $key = 'flash')
Run Code Online (Sandbox Code Playgroud)

因此,在我发布的第一个链接中建议这似乎是一种更好的方法,因为它不需要新的布局,只是使用Elements.

祝好运.