Laravel库处理消息

时间:2015-02-07 13:32:11

标签: laravel-4

我刚刚在laravel中创建了一个库类。

class Message {

    public static $data = array();

    public function __construct() {
        // If session has flash data then set it to the data property
        if (Session::has('_messages')) {
            self::$data = Session::flash('_messages');
        }
    }

    public static function set($type, $message, $flash = false) {
        $data = array();

        // Set the message properties to array
        $data['type'] = $type;
        $data['message'] = $message;

        // If the message is a flash message
        if ($flash == true) {
            Session::flash('_messages', $data);
        } else {
            self::$data = $data;
        }
    }

    public static function get() {
        // If the data property is set
        if (count(self::$data)) {
            $data = self::$data;



            // Get the correct view for the message type
            if ($data['type'] == 'success') {
                $view = 'success';
            } elseif ($data['type'] == 'info') {
                $view = 'info';
            } elseif ($data['type'] == 'warning') {
                $view = 'warning';
            } elseif ($data['type'] == 'danger') {
                $view = 'danger';
            } else {
                // Default view
                $view = 'info';
            }

            // Return the view
            $content['body'] = $data['message'];
            return View::make("alerts.{$view}", $content);
        }
    }
}

我可以在我的视图中使用此类调用Message :: get()。在控制器中,我可以将消息设置为Message :: set(' info','成功消息在这里。');它完美无缺。

但是,我不能使用此类用于使用Message :: set(' info','成功消息在这里。',true)重定向flash消息。有什么想法,这段代码有什么不对吗?

1 个答案:

答案 0 :(得分:0)

第一个问题是在使用上面的get和set方法时没有调用构造函数,稍作修改,代码现在正在工作。 :)

class Message {

    public static $data = array();

    public static function set($type, $message, $flash = false) {
        $data = array();

        // Set the message properties to array
        $data['type'] = $type;
        $data['message'] = $message;

        // If the message is a flash message
        if ($flash == true) {
            Session::flash('_messages', $data);
        } else {
            self::$data = $data;
        }
    }

    public static function get() {

        // Check the session if message is available in session
        if (Session::has('_messages')) {
            self::$data = Session::get('_messages');
        }

        // If the data property is set
        if (count(self::$data)) {
            $data = self::$data;

            // Get the correct view for the message type
            if ($data['type'] == 'success') {
                $view = 'success';
            } elseif ($data['type'] == 'info') {
                $view = 'info';
            } elseif ($data['type'] == 'warning') {
                $view = 'warning';
            } elseif ($data['type'] == 'danger') {
                $view = 'danger';
            } else {
                // Default view
                $view = 'info';
            }

            // Return the view
            $content['body'] = $data['message'];
            return View::make("alerts.{$view}", $content);
        }
    }
}