使用Laravel无法访问旧输入和数据丢失

时间:2014-07-24 15:58:00

标签: laravel laravel-4

我有一个表单,其输入值应使用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在视图中被检测为空。

我做错了什么?为什么不将值传递给视图?

1 个答案:

答案 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')将按照需要运作。