11

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

是否可以使用闪存数据做同样的事情?像这样的东西Session::flashpush('user.teams', array('developers', 'designers'));会很棒。

目前对我来说的用例主要如下:

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

4

4 回答 4

14

据我所知,你可以做到。我检查了这个以防万一:

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" }

有用。您也可以像 Christopher Morrissey 刚刚评论的那样序列化数组或对象

于 2013-11-04T21:59:03.977 回答
6

我用这个:

Session::flash($key, array_merge((array)Session::get($key), array($value)));
于 2014-04-24T20:31:54.557 回答
5

我创建了这个助手类:

<?php

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

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

用法:

 Flash::push('success','Feature saved');

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 %}

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

Flash::push('flash_message', 'user.teams');
Flash::push('flash_message', 'developers');
于 2014-04-26T21:12:06.573 回答
0

拉拉维尔 8

如果您想将用户输入的信息存储为数组然后单独拉取,这是我使用最新版本的 Laravel 发现的最有效的方法。我正在使用 Madlibs 应用程序。

$req->session()->put([
  'adj1' => $req->input('adj1'),
  'noun1' => $req->input('noun1'),
  'place' => $req->input('place'),
]);

return $req->session()->flash('test',
   array('adj1', 'noun1', 'place',
));

我希望这对未来的用户有所帮助。

于 2021-04-28T00:54:37.307 回答