Как создать выпадающий список данных, которые пришли из другого имени таблицы в Laravel 6 - PullRequest
0 голосов
/ 28 января 2020

У меня проблема с тем, что я хочу создать раскрывающийся список из таблицы городов и отобразить ее в виде пакета. Как создать имя города в виде пакета?

спасибо

Вот мой код _create.blade. php

@extends('layouts.admin.app')
@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-sm-6 col-md-6 col-lg-6">
            <div class="card">
                <div class="card-header">Create Pack Master</div>
                <div class="card-body">
                    <form action="{{ route('packs.store') }}" method="post">
                        @include('packsmaster._form', ['buttonText'=>'Save', 'inputName'=>'Pack Name'])
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

_form.blade. php

@csrf
<div class="form-group">
    <label for="pack-name" class="col-md-4 col-form-label">{{ $inputName }}</label>
    <input id="pack-name" type="text" name="pack_name" class="form-control @error('pack_name') is-invalid @enderror" 
        value="{{ old('pack_name', $pack->pack_name) }}" autocomplete="pack_name" autofocus>
    @error('pack_name')
    <span class="invalid-feedback" role="alert">
        <strong>{{ $message }}</strong>
    </span>
    @enderror
</div>
<div class="form-group">
    <label for="city_name">City Name</label>
    <select class="form-control" id="city_name">
        @foreach ($cities as $city)
            <option>{{ $city->city_name }}</option>
        @endforeach
    </select>
</div>
<div class="form-group">
    <button type="submit" class="btn btn-outline-secondary">{{ $buttonText }}</button>
    <a href="{{ route('packs.index') }}" class="btn btn-outline-danger">Cancel</a>
</div>

Это форма из пакета, и я пытаясь получить название города из таблицы City. но я думаю, что не могу назвать это напрямую. Я хочу отобразить название города в мастере создания пакета с выпадающим списком.

PacksController. php

<?php

namespace App\Http\Controllers;

use App\Pack;
use App\City;
use Illuminate\Http\Request;
use App\Http\Requests\PackRequest;

class PacksController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $packs = Pack::latest()->paginate(5);
        return view('packsmaster.index', compact('packs'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $pack = new Pack();
        return view('packsmaster._create', compact('pack'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(PackRequest $request)
    {
        // $request->user()->packs()->create($request->only('pack_name'));
        // return redirect('packs')->with('success', "your data has bee saved!!");
        $request->user()->packs()->create($request->only('pack_name'));
        return redirect('packs')->with('success', "your pack has been saved!!");
    }

1 Ответ

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

Загрузить города в контроллере?

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $cities = City::all();
        $pack = new Pack();
        return view('packsmaster._create', compact('pack','cities'));
    }

Теперь, когда у вас есть список городов в представлении, выполните итерацию по ним, добавив идентификатор города в качестве значения параметра. Обязательно назовите элемент формы, в идеале с тем же именем, что и столбец, который вы хотите заполнить.

    <select class="form-control" name="city_id">
        @foreach ($cities as $city)
            <option value="{{ $city->id }}">{{ $city->city_name }}</option>
        @endforeach
    </select>

Теперь в контроллере вы можете сохранить идентификатор в базе данных

    $request->user()->packs()->create($request->only(['pack_name','city_id']));

В какой-то момент вы захотите добавить подтверждение!

...