是否可以将数组存储为Laravel中的闪存数据?

Ant*_*son 8 php session-variables laravel

我一直在寻找一种方法来做到这一点.我知道可以使用以下内容在会话中存储数组:Session::push('user.teams', 'developers');

是否可以使用闪存数据执行相同的操作?类似的东西Session::flashpush('user.teams', array('developers', 'designers'));会很棒.

我此刻的用例主要有以下几点:

Session::flash('flash_message', $validator->messages());

Isr*_*uño 10

据我所知,你可以做到.我已经检查了以防万一:

Session::flash('test', array('test1', 'test2', 'test3'));

... After the request

dd(Session::get('test'));

// array(2) { [0]=> string(5) "test1" [1]=> string(5) "test2" [2]=> string(5) "test3" }
Run Code Online (Sandbox Code Playgroud)

有用.您还可以像Christopher Morrissey所评论的那样序列化数组或对象


con*_*com 6

我用这个:

Session::flash($key, array_merge((array)Session::get($key), array($value)));
Run Code Online (Sandbox Code Playgroud)


mpe*_*pen 5

我创建了这个助手类:

<?php

class Flash {
    public static function push($key, $value) {
        $values = Session::get($key, []);
        $values[] = $value;
        Session::flash($key, $values);
    }
}
Run Code Online (Sandbox Code Playgroud)

它允许您将多个项目推送到同一个键,以便在获取时始终返回一个数组。

用法:

 Flash::push('success','Feature saved');
Run Code Online (Sandbox Code Playgroud)

Twig 模板(Blade 应该不会有太大的不同):

{% if session_has('success') %}
    <div class="alert alert-block alert-success fade in">
        <button class="close" data-dismiss="alert">&times;</button>
        {% for msg in session_get('success') %}
            <p><i class="fa-fw fa fa-check"></i> {{ msg }}</p>
        {% endfor %}
    </div>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

在您的场景中,您可能会像这样使用它:

Flash::push('flash_message', 'user.teams');
Flash::push('flash_message', 'developers');
Run Code Online (Sandbox Code Playgroud)