【发布时间】:2016-01-08 22:07:03
【问题描述】:
在开发 Laravel 4.2 应用时,我最近注意到对 Session::flash(以及类似的 Input::flash)的调用有时会出现不一致的行为。
一个特定的例子:我想从edit 函数中闪存一些数据,以便我可以在相应的update 函数中访问它。 edit 视图包含一个相当简单的表单,包括在用户从下拉列表中选择一个选项后通过 AJAX 调用加载的一个字段。这是我的MCVE:
在MyController.php:
<?php
class MyController {
public function edit($id) {
Session::flash('somevar', "myvalue");
return View::make('edit');
}
public function update($id) {
var_dump(Session::all()); die();
if (Session::has('somevar')) {
// do stuff
}
return Redirect::to('/');
}
}
?>
在AjaxController.php:
<?php
class AjaxController {
public function getinfo() {
return "here's that data you wanted";
}
}
?>
在edit.blade.php:
<script type="text/javascript">
$('form select[name=foo]').change(function() {
$.ajax({
url: '/ajax/getinfo'
success: function(data) {
alert(data);
}
});
});
</script>
<a href="/update/1">Update</a>
有时update() 中的会话转储会显示闪存数据,但有时会丢失。
出了什么问题?
【问题讨论】: