【问题标题】:Manipulate $session->flash() view output in CakePHP在 CakePHP 中操作 $session->flash() 视图输出
【发布时间】:2011-01-24 13:51:34
【问题描述】:

我希望在我的 CakePHP 应用程序中操作 $session->flash() 输出,目前我有一个非常简单的默认实现来显示 flash 和 auth 错误消息:

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

这会产生一个&lt;div&gt;,其 ID 和类中包含消息。我想做的是包装/替换生成的 HTML,特别是一些 jQuery UI 类,但是包装很困难,因为我无法判断何时实际显示消息,所以我最终得到一个空但样式错误分区。包装工作真正需要的是检查 $session->flash() 返回任何内容,但是在使用 empty() 进行检查时,我得到“无法在写入上下文中使用方法返回值”;

据我所知,生成的 HTML 是硬编码到会话助手中的!如果您能弄清楚如何独立更改身份验证消息和普通闪存消息的类,则可以加分。

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

    要检查消息是否要闪烁,请将其放入布局中

    <?php if($session->check('Message')){ echo $this->Session->flash();} ?>
    

    设置消息闪现时可以设置CSS属性

    http://book.cakephp.org/view/1311/Methods#setFlash-1313

    【讨论】:

    • 这是迄今为止最好的解决方案。具体来说,我使用“Message.auth”来检查身份验证消息。谢谢。
    【解决方案2】:

    阅读 setFlash() 并使用该方法采用的其他参数来定义您自己的元素。然后你就可以随心所欲了。

    http://book.cakephp.org/view/400/setFlash

    【讨论】:

    • Auth flash 消息是自动的,但我可以使用 $this-&gt;Auth-&gt;authError 设置实际消息本身,但不能使用它使用的布局。
    • 不,不是,它使用与其他消息完全相同的代码,因此可以执行完全相同的操作。所有设置 auth 消息正在做的是将其作为 array(....) 与 params 写入 Message.auth
    【解决方案3】:

    我发现的一种变通解决方案是将$session-&gt;flash() 设置为一个变量,然后使用empty() 对其进行检查,以便在必要时回显出适当的&lt;div&gt;

    $flashMessage = $this->flash();
    $authMessage = $this->flash('auth');
    

    .. 然后检查每个是否为空。当然,我里面有一些不必要的 html,但就身份验证消息而言,我认为这是尽可能灵活的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 2013-12-30
      • 2017-10-14
      • 2015-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多