我一直在寻找一种方法来做到这一点。我知道可以使用以下内容在会话中存储数组:Session::push('user.teams', 'developers');
是否可以使用闪存数据执行相同的操作?像Session::flashpush('user.teams', array('developers', 'designers'));
这样的东西会很棒。
此时我的用例主要有以下几点:
Session::flash('flash_message', $validator->messages());
答案 0 :(得分: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" }
有效。您也可以像Christopher Morrissey刚评论的那样序列化一个数组或对象
答案 1 :(得分:4)
我用这个:
Session::flash($key, array_merge((array)Session::get($key), array($value)));
答案 2 :(得分:2)
我创建了这个助手类:
<?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">×</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');
答案 3 :(得分:0)
Laravel 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',
));
我希望这对未来的用户有所帮助。