0

我有一个问题,我想从城市表中创建一个下拉列表并在包视图中显示。 如何在包视图中创建 city_name?

谢谢

这是我的代码 _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>

这是来自 pack 的表格,我正在尝试从 City 表中获取 city_name。但我认为我不能直接调用它。我想在带有下拉列表的 create pack master 中显示 city_name。

包控制器.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!!");
    }
4

1 回答 1

0

在控制器中加载城市?

    /**
     * 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'));
    }

现在您已经在视图中获得了城市列表,迭代它们并将城市的 id 作为选项的值。确保命名表单元素,最好与要填充的列名称相同。

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

现在在控制器中,您可以将 ID 保存到数据库中

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

在某些时候,您会想要添加一些验证!

于 2020-01-28T06:28:25.467 回答