我有一个表单,其输入值应使用旧值填充
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
在视图中被检测为空。
我做错了什么?为什么值没有传递给视图?
如果您的最后一行是:
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')
应按预期工作。