如何在 Laravel 6 中创建来自不同表名的下拉列表数据



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

谢谢

这是我的代码 _create.刀片.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.刀片.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_name。 但我想我不能直接称之为。我想在创建带有下拉列表的包主数据中显示city_name。

包控制器.php

<?php
namespace AppHttpControllers;
use AppPack;
use AppCity;
use IlluminateHttpRequest;
use AppHttpRequestsPackRequest;
class PacksController extends Controller
{
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function index()
{
$packs = Pack::latest()->paginate(5);
return view('packsmaster.index', compact('packs'));
}
/**
* Show the form for creating a new resource.
*
* @return IlluminateHttpResponse
*/
public function create()
{
$pack = new Pack();
return view('packsmaster._create', compact('pack'));
}
/**
* Store a newly created resource in storage.
*
* @param  IlluminateHttpRequest  $request
* @return IlluminateHttpResponse
*/
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!!");
}

在控制器中加载城市?

/**
* Show the form for creating a new resource.
*
* @return IlluminateHttpResponse
*/
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']));

在某些时候,您将需要添加一些验证!

最新更新