我有一个表单,其输入值应使用Input::old()
的旧值填充:
{{ Form::open(['url' => '/directions', 'method' => 'get', 'class' => 'form-horizontal']) }}
<div class="form-group">
{{ Form::label('origin', 'Origin', ['class' => 'col-sm-2 control-label']) }}
<div class="col-sm-10">
{{ Form::text('origin', Input::get('origin'), ['class' => 'form-control', 'autocomplete' => 'off']) }}
</div>
</div>
<div class="form-group">
{{ Form::label('destination', 'Destination', ['class' => 'col-sm-2 control-label']) }}
<div class="col-sm-10">
{{ Form::text('destination', Input::get('destination'), ['class' => 'form-control', 'autocomplete' => 'off']) }}
</div>
</div>
<div class="form-group">
<div class="col-sm-10 col-sm-offset-2">
{{ Form::submit('Buscar', ['class' => 'btn btn-default']) }}
</div>
</div>
{{ Form::close() }}
在路线中我创建了这样的视图:
Route::get('/directions', function() {
$origin = Input::get('origin');
$destination = Input::get('destination');
$url = "http://maps.googleapis.com/maps/api/directions/json?origin=" . $origin . "&destination=" . $destination . "&sensor=false";
$json = json_decode(file_get_contents(str_replace(" ", "%20", $url)), true);
$result = var_export($json, true);
return View::make('home.index')->with('directions', $result);
});
但是,似乎旧的输入值没有传递给视图,所以我改变了最后一行:
return Redirect::to('/')->withInput()->with('directions', $result);
现在Input::old()
保持不获取旧输入值,但Input::get()
确实如此。此外,变量directions
在视图中被检测为空。
我做错了什么?为什么不将值传递给视图?
答案 0 :(得分:2)
如果你的最后一行是:
return Redirect::to('/')->withInput()->with('directions', $result);
然后在您的视图中,您可以使用以下命令访问每个输入参数:
Input::old('parameter');
要访问已通过的directions
,您必须使用Session
:
{{ Session::get('directions') }}
如果您不喜欢这样,并且想要使用您的第一选择:
return View::make('home.index')->with('directions', $result);
为了能够在视图中访问您的输入,在此之前添加:
Input::flash(); or Input::flashOnly('origin', 'destination');
现在在您的观看中,Input::old('origin')
将按照需要运作。