繁体   English   中英

在 Laravel 中重定向后使用模型对象填充表单

[英]Populate a form with a model object after redirecting in Laravel

我有一个运行良好的模型的基本 CRUD 结构。 现在我想重定向到 create 方法并使用预先存在的模型填充表单。 它可以通过用户选择一个 id 来工作,然后我会选择该模型并重定向到创建页面并填充表单。

这是我迄今为止尝试过的

$order = Orders::find($id);

$inventory = Inventory::where(['id' => $order->inventory_id])->first()->toArray();

return redirect()->route('backend.inventory.create', $inventory['bag_id'])->withInput($inventory);

在上面的例子中,它找到订单并选择与其相关的单个库存项目(我已经确认它肯定按预期选择了一个库存项目)并重定向到库存创建页面。 但是,当使用 ->withInput() 方法时,这似乎并没有像我预期的那样用数据填充我的表单。

如何使用重定向将数据传递到表单?


按照下面的要求添加表单代码。 这只是表单的一列,因为它是一个巨大的代码块

<div class="form-group row" id="item-name" v-if="type != '3'">
    <label for="name" class="col-md-2 col-form-label text-md-right">Item Name</label>
    <div class="col-md-6">
        <input id="name" type="text" class="form-control" name="name" value="{{ old('name') }}" required>

        @if ($errors->has('name'))
            <span class="invalid-feedback" role="alert">
                <strong>{{ $errors->first('name') }}</strong>
            </span>
        @endif
    </div>
</div>

你可以使用这个:

return Redirect::back()->withInput(Input::all());

如果您正在使用表单请求验证,这正是 Laravel 将您重定向回错误和给定输入的方式。

摘自\\Illuminate\\Foundation\\Validation\\ValidatesRequests

return redirect()->to($this->getRedirectUrl())
                    ->withInput($request->input())
                    ->withErrors($errors, $this->errorBag());

尝试这个

<div class="form-group row" id="item-name" v-if="type != '3'">
    <label for="name" class="col-md-2 col-form-label text-md-right">Item Name</label>

    <div class="col-md-6">
        <input id="name" type="text" class="form-control" name="name" value="{{ old('name') ?? $inventory['name'] }}" required>

        @if ($errors->has('name'))
            <span class="invalid-feedback" role="alert">
            <strong>{{ $errors->first('name') }}</strong>
        </span>
        @endif
    </div>
</div>

{{ old('name') ?? ($inventory['name'] ?? '') }} {{ old('name') ?? ($inventory['name'] ?? '') }}如果旧数据存在,它将显示旧数据,否则来自 withInput 的$inventory->name也是可选的,这就是为什么我把 ??

参考链接https://laravel.com/docs/6.x/requests#old-input

您可以使用compact()函数来创建包含变量及其值的数组。

$order = Orders::find($id);
$inventory = Inventory::where(['id' => $order->inventory_id])->first()->toArray();
return view('backend.inventory.create', compact('inventory'));

在您的视图页面中,您可以像这样使用它,

<input id="name" type="text" class="form-control" name="name" value="{{ $inventory['name'] }}" required>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM