Laravel 无法访问旧输入且数据丢失

问题描述 投票:0回答:1

我有一个表单,其输入值应使用旧值填充

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
在视图中被检测为空。

我做错了什么?为什么值没有传递给视图?

php laravel laravel-4
1个回答
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')
应按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.