这是我的路线
Route::get('/product/create',[ProductoController::class,'createProduct'])->name('product.create')->middleware('auth');
Route::post('/product/create',[ProductoController::class,'storeProduct'])->middleware('auth');
Route::get('/product/edit/{id}',[ProductoController::class, 'editProduct'])->name('product.edit');
Route::put('/product/update/{id}',[ProductoController::class, 'updateProduct'])->name('product.update');
我有一个用于创建产品和编辑产品的视图,但是当我创建产品时,整个设计都会出现,但是当我单击编辑时,它会更新产品,但表单设计不会出现,这与我进入创建产品时不同,如果设计出现?
我的控制器的此功能创建了产品
public function storeProduct(Request $request): RedirectResponse
{
//Array de id de categorías
$idsCategories = $request['categories'];
// Valida los datos del formulario
$validated = $request->validate($this->rules,$this->rulesMessages);
//Creamos el producto y asociamos sus categorías
Producto::create([
'name' => $validated['name'],
'price' => $validated['price'],
'description' => $validated['description'],
'stock' => $validated['stock'],
])->categories()->attach($idsCategories);
//Redirecciona al menu
return redirect(RouteServiceProvider::HOME);
}
我的控制器的这个功能更新了产品
public function updateProduct(Request $request, $idProduct): RedirectResponse
{
//Recupers el producto
$producto = Producto::find($idProduct);
//Valida los cambios
$validated = $request->validate($this->rules,$this->rulesMessages);
//Creamos el producto y asociamos sus categorías
$producto->update([
'name' => $validated['name'],
'price' => $validated['price'],
'description' => $validated['description'],
'stock' => $validated['stock'],
]);
//Asociar categorías
$producto->categories()->sync($request['categories']);
//Redirecciona al menu
return redirect(RouteServiceProvider::HOME);
}
这是我想用来创建和编辑产品的表单,如果我创建产品,则可以看到设计,但如果我更新,则看不到设计
<x-app-layout>
<main class="main-content position-relative max-height-vh-100 h-100 border-radius-lg overflow-x-hidden">
<div class="container-fluid py-4 px-5">
<form role="form" class="text-start" method="POST" action="{{ !isset($product) ? route('product.create') : route('product.update',['id' => $product->id]) }}">
@csrf
@isset($product)
@method('PUT')
@endisset
{{-- Nombre --}}
<div class="mb-3">
<label for="name" class="form-label">Nombre</label>
<input type="text" class="form-control" id="name" name="name" value="{{ $product->name ?? '' }}" aria-describedby="Introducción del nombre">
@error('name')
<span class="text-danger text-sm">{{ $message }}</span>
@enderror
</div>
{{-- Precio --}}
<div class="mb-3">
<label for="price" class="form-label">Precio</label>
<input type="number" class="form-control" id="price" name="price" step="0.01" value="{{ $product->price ?? '' }}" aria-describedby="Introducción del precio">
@error('price')
<span class="text-danger text-sm">{{ $message }}</span>
@enderror
</div>
{{-- Descripción --}}
<div class="mb-3">
<label for="description" class="form-label">Descripción</label>
<input type="text" class="form-control" id="description" name="description" value="{{ $product->description ?? '' }}" aria-describedby="Introducción de la descripción">
@error('description')
<span class="text-danger text-sm">{{ $message }}</span>
@enderror
</div>
{{-- Categorías --}}
<div class="mb-3">
<label for="description" class="form-label">Categoría:</label>
<select class="form-select" id="categories" name="categories[]" multiple required>
@foreach($categories as $category)
<option value="{{$category->id}}">{{$category->name}}</option>
@endforeach
</select>
</div>
{{-- Stock --}}
<div class="mb-3">
<label for="stock" class="form-label">Cantidad</label>
<input type="number" class="form-control" id="stock" name="stock" value="{{ $product->stock ?? '' }}" aria-describedby="Introducción de la cantidad">
@error('stock')
<span class="text-danger text-sm">{{ $message }}</span>
@enderror
</div>
<button type="submit" class="btn btn-primary">{{!isset($product) ? 'Crear producto' : 'Actualizar producto'}}</button>
</form>
</div>
</main>
</x-app-layout>
我不明白为什么一个人可以看到设计而另一个人看不到,如果是同一个模板。你能帮我吗?
我想解决为什么更新产品后CSS不出现的问题。因为当我创建产品时,相同的模板确实出现在 css 中
我的建议是创建 2 个视图,一个用于添加,另一个用于更新。我们为什么要这样做?以便我们可以方便地调试并更好地组织程序。
我看到您使用的视图只有一个,并且您用于添加和编辑的控制器使用相同的视图。