Метод PUT не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD, POST. в Ларавеле - PullRequest
0 голосов
/ 19 октября 2019

я хочу сделать, продавец может редактировать и обновлять продукт

это ProductController

public function edit($id)
    {
        $product = Product::find($id);
        return view('product.edit', compact('product'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $product = Product::find($id);
        $product-> title = $request-> title;
        $product-> description = $request-> description;
        $product-> price = $request-> price;

        if($request->hasFile('image')){
            $file = $request-> file('image');
            $filename = time().'.'.$file-> getClientOriginalExtension();
            $location = public_path('/images');
            $file-> move($location, $filename);
            $oldImage = $product->image;
            \Storage::delete($oldImage);
            $product-> image= $filename;
        }
        $product-> save();

        return back();
    }

это edit.blade.php

<form action="{{route('product.update', $product->id)}}" method="post" enctype="multipart/form-data">
        {{csrf_field()}}
        {{method_field('put')}} 
[...]

<button type="submit" class="btn btn-success">Submit</button>

это веб.php

Route::get('/index', 'ProductController@index');//seller view all product

Route::get('/create', 'ProductController@create'); //seller create new product
Route::post('','ProductController@store')->name('product.store'); //store in database

Route::get('/edit/{id}','ProductController@edit'); // seller edit post
Route::post('','ProductController@update')->name('product.update'); //seller update

, когда я нажимаю кнопку отправки для обновления. Метод PUT для этого маршрута не поддерживается. Поддерживаемые методы: GET, HEAD, POST. показать

как я могу это исправить? ПОЖАЛУЙСТА, ПОМОГИТЕ

Ответы [ 3 ]

0 голосов
/ 19 октября 2019

Вам необходимо передать параметр id в запросе формы, как показано ниже:

<form action="{{ route('product.update', $product->id) }}" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
{{ method_field('put') }}
[...]

<button type="submit" class="btn btn-success">Submit</button>

, а затем изменить метод контроллера следующим образом:

Route::put('edit/{id}','ProductController@update')->name('product.update');

Этопотому что ваш метод контроллера ожидает, что id будет пропущен в запросе, но на самом деле его не получает, следовательно, ошибка.

Надеюсь, это поможет!

0 голосов
/ 20 октября 2019

Попробуйте еще раз, пожалуйста;

Route::put('edit/{id}','ProductController@update')->name('product.update');

и

<form action="{{ route('product.update', ["id" => $product->id]) }}" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
{{ method_field('put') }}
[...]

<button type="submit" class="btn btn-success">Submit</button>
0 голосов
/ 19 октября 2019

Вы должны использовать PUT в маршруте;

Route::put('','ProductController@update')->name('product.update');

И не производить обновления, кроме product-> id

<form action="{{route('product.update')}}" method="post" enctype="multipart/form-data">
        {{csrf_field()}}
        {{method_field('put')}} 
[...]

<button type="submit" class="btn btn-success">Submit</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...