Метод PUT не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD. (Используя ресурс) - PullRequest
0 голосов
/ 02 ноября 2019

Я видел эту проблему пару раз, но не в этой точной форме.

Вот мой: edit.blade.php

<form action="{{ route('admin.korisnici.update', ['korisnik' => $korisnik->id]) }}" method="POST">
    {{csrf_field()}}
    {{method_field('PUT')}}
    @foreach($uloge as $uloga)
        <div class="form-check">
            <input type="checkbox" name="uloge[]" value="{{ $uloga->id }}" 
            {{ $korisnik->hasRole($uloga->naziv_tipa)?'checked':'' }}>
            <label>{{ $uloga->naziv_tipa }}</label>
        </div>
    @endforeach
    <button type="submit" class="btn btn-primary btn-sm">Ažuriraj</button>
</form>

Мой контроллер: KorisniciController.php

public function update(Request $request, $id)
{
        if (Auth::user()->id == $id) {
            return redirect()->route('admin.korisnici.index');
        }

        $korisnik = User::find($id);
        $korisnik->roles()->sync($request->uloge);

    return redirect()->route('admin.korisnici.index');
}

И мой web.app

Route::namespace('Admin')->prefix('admin')->middleware(['auth', 'roles.admin'])->name('admin.')->group(function(){
    Route::resource('/korisnici', 'KorisniciController')->except(['show', 'create', 'store']);
});

php artisan route: список возвращается

+--------+-----------+----------------------------------+-------------------------+------------------------------------------------------------------------+--------------------------+
| Domain | Method    | URI                              | Name                    | Action                                                                 | Middleware               |
+--------+-----------+----------------------------------+-------------------------+------------------------------------------------------------------------+--------------------------+
|        | GET|HEAD  | /                                |                         | Closure                                                                | web                      |
|        | GET|HEAD  | admin                            |                         | Closure                                                                | web,auth,roles.admin     |
|        | GET|HEAD  | admin/korisnici                  | admin.korisnici.index   | App\Http\Controllers\Admin\KorisniciController@index                   | web,auth,roles.admin     |
|        | DELETE    | admin/korisnici/{korisnici}      | admin.korisnici.destroy | App\Http\Controllers\Admin\KorisniciController@destroy                 | web,auth,roles.admin     |
|        | PUT|PATCH | admin/korisnici/{korisnici}      | admin.korisnici.update  | App\Http\Controllers\Admin\KorisniciController@update                  | web,auth,roles.admin     |
|        | GET|HEAD  | admin/korisnici/{korisnici}/edit | admin.korisnici.edit    | App\Http\Controllers\Admin\KorisniciController@edit                    | web,auth,roles.admin     |

Ответы [ 2 ]

2 голосов
/ 02 ноября 2019

Маршрут ожидает параметр korisnici, но вы передаете korisnik

На самом деле вам вообще не нужно указывать ключ, просто передайте модель на маршрут

<form action="{{ route('admin.korisnici.update', $korisnik) }}" 
0 голосов
/ 02 ноября 2019

Это может быть ваш случай или нет, но это случилось со мной один раз, и решение было очистить кеш маршрутов:

php artisan route:cache
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...