我正在使用Laravel 4及其内置窗体组件。我试图设置它,以便我可以给出一组默认值,但是如果用户提交并且验证器失败,它将使用上一个输入的值。但是,下面的代码总是失败。由于某种原因,会话值“threw_error”始终为真,即使表单发生错误。设置默认值并使用Laravel 4窗体的错误输入?
似乎所有事情都是在会话中完成的,这就是为什么我要设置__old_input(表单使用的内部键)。我究竟做错了什么?我应该像这样使用__old_input,还是有更好的方法来实现这个目标?我正在使用足智多谋的控制器,所以下面的index()是GET /,而store()是POST /。
class Admin_DetailsController extends Admin_BaseController
{
public function index()
{
$details = Detail::all();
// this is always true for some reason?
if(!Session::get('threw_error', false))
{
Session::put('__old_input', $details);
}
$data['message'] = Session::get('message');
$this->layout->nest('content', 'admin.details.index', $data);
}
public function store()
{
$validator = $this->makeValidator();
if($validator->fails())
{
return Redirect::to('/admin/details')->withErrors($validator)->withInput()->with('threw_error', 1);
}
// process normally
}
}
// in view
{{ Form::text('some_field') }}
编辑:此代码按预期工作,或多或少,虽然会议:: flashInput($细节)比手动调用__old_input更好。我尝试删除表单中的一些字段,看看它是否在那里,这实际上工作。换句话说,我认为这是一个问题,无论是我的PHP本地版本,还是某个配置或某个问题 - 而不是Laravel问题。