Заполните форму объектом модели после перенаправления в Laravel - PullRequest
0 голосов
/ 31 января 2020

У меня есть базовая c структура CRUD для модели, которая работает хорошо. Теперь я хочу перенаправить в метод create и заполнить форму уже существующей моделью. Это будет работать при выборе пользователем идентификатора, а затем я выберу эту модель и перенаправлю на страницу создания и заполню форму.

Это то, что я пробовал до сих пор

$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>

Ответы [ 3 ]

0 голосов
/ 31 января 2020

попробуйте это

<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'] ?? '') }} если старые данные присутствуют, они будут отображать старые данные, в противном случае $inventory->name, который поступает с withInput с, также необязателен, поэтому я поставил ??

ссылка ссылка https://laravel.com/docs/6.x/requests#old -вход

0 голосов
/ 31 января 2020

Вы можете использовать функцию 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>
0 голосов
/ 31 января 2020

Вы можете использовать это:

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

Если вы используете проверку запроса формы, именно так Laravel перенаправит вас обратно с ошибками и данным вводом.

Выдержка из \ Illuminate \ Foundation \ Validation \ ValidatesRequests :

return redirect()->to($this->getRedirectUrl())
                    ->withInput($request->input())
                    ->withErrors($errors, $this->errorBag());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...