В настоящее время у меня есть приложение, которое может иметь модификатор со многими параметрами. Пример использования - модификатор Toppings с вариантами сыра, салата, соли и перца. Модификатор может иметь опции 1 -> N.
Я хочу иметь форму, которая отображает имя Modifier
, а также позволяет редактировать / удалять Option
записи одновременно. Я хочу вставить это в мою текущую форму для добавления / редактирования модификаторов.
Есть ли простой способ сделать это, чтобы у меня был только один контроллер ресурсов Модификатора, который также управляет параметрами?
web.php
Route::resource('modifiers', 'ModifierController')->middleware('auth');
Контроллер:
namespace App\Http\Controllers;
use App\Modifier;
use Illuminate\Http\Request;
class ModifierController extends Controller
{
public function create()
{
$data = ['action' => route('modifiers.store'),'method' => 'POST', 'modifier' => new Modifier()];
return view('modifiers.form',$data);
}
public function store(Request $request)
{
$modifier = new Modifier($request->all());
$this->do_validate($request);
$modifier->save();
return redirect(route('modifiers.index'));
}
}
просмотры / модификаторы / form.blade.php
@extends('layouts.layout-2')
@section('content')
<div class="container">
<div class="row justify-content-center">
@include ('layouts.errors')
<div class="col-md-12">
{!! Form::open(['url' => $action, 'method' => 'post', 'class' => 'form', 'id' => 'form'])!!}
@csrf
@method($method)
<div class="form-group">
<label for="name">{{ __('modifiers.name')}}</label>
<input type="text" class="form-control" id="name" name="name" value = "{{old('name',$modifier->name)}}">
</div>
<button id="btnSubmit" class="btn btn-primary">{{ __('common.submit') }}</button>
{!! Form::close() !!}
</div>
</div>
</div>
@endsection
Модели:
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Modifier extends Model
{
use SoftDeletes;
protected $guarded = ['id'];
public function options()
{
return $this->hasMany('App\Option');
}
}
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Option extends Model
{
use SoftDeletes;
protected $guarded = ['id'];
public function modifier()
{
return $this->belongsTo('App\Modifier');
}
}