我在 Laravel 中使用 .blade.php 视图时遇到问题

问题描述 投票:0回答:1

这是我的路线

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 中

php laravel laravel-blade
1个回答
0
投票

我的建议是创建 2 个视图,一个用于添加,另一个用于更新。我们为什么要这样做?以便我们可以方便地调试并更好地组织程序。

我看到您使用的视图只有一个,并且您用于添加和编辑的控制器使用相同的视图。

© www.soinside.com 2019 - 2024. All rights reserved.