Маршрут не определен как исключение в Laravel, но Маршрут определен - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь вызвать маршрут нажатием кнопки, но он дает мне Route [makeAdmin], не определенный. (View: \ resources \ views \ admin \ showUser.blade. php), хотя маршрут определен.

мой блэйд-вид:

 <div style="padding-bottom:10px;">
    @if($user->isAdmin == 0)
      <form action="{{route('makeAdmin', $user->id)}}" method="POST">
        @csrf
        @method('PUT')
         <div class="form-group">
      <button class="btn btn-warning" type="submit">Make Admin</button>
         </div> 
     </form>
    @else
      <button class="btn btn-warning" disabled="disabled">Already Admin</button>
    @endif
  </div>

мои маршруты:

Route::GET('/', 'CoursesController@root')->name('root');
Route::GET('/courses/create', 'CoursesController@create')->name('courses.create');
Route::POST('/courses', 'CoursesController@store')->name('courses.store');
Route::GET('/courses', 'CoursesController@index')->name('courses.courses');
Route::GET('/courses/{id}', 'CoursesController@show')->name('courses.show');
Route::GET('/admin/courses', 'AdminController@getCourses')->name('admin.courses');
Route::GET('/admin/users', 'AdminController@getUsers')->name('admin.users');
Route::GET('/admin', 'AdminController@index')->name('admin');
Route::GET('/admin/courses/{id}', 'AdminController@showCourse')->name('admin.showCourse');
Route::PUT('/admin/courses/{course}', 'AdminController@editCourse')->name('admin.editCourse');
Route::DELETE('/admin/courses/{course}', 'AdminController@destroyCourse')->name('admin.destroyCourse');
Route::GET('/admin/users/{id}', 'AdminController@showUser')->name('admin.showUser');
Route::PUT('/admin/users/{user}', 'AdminController@makeAdmin')->name('makeAdmin');
Route::PUT('/admin/users/{user}', 'AdminController@editUser')->name('admin.editUser');
Route::DELETE('admin/users/{user}', 'AdminController@destroyUser')->name('admin.destroyUser');



Auth::routes();
Route::GET('/home', 'HomeController@index')->name('home');

Я пробовал route: clear и route: cache, но проблема все еще появляется. И маршрут не отображается в маршруте: список Ваша помощь будет оценена.

Ответы [ 4 ]

0 голосов
/ 04 мая 2020

Проблема заключалась в том, что у меня есть дубликат маршрута в сети. php

Route::PUT('/admin/users/{user}', 'AdminController@makeAdmin')->name('makeAdmin');
Route::PUT('/admin/users/{user}', 'AdminController@editUser')->name('admin.editUser');

По-видимому, это не так, как в Laravel, поэтому я удалил маршрут makeAdmin и добавил особенность как часть формы editUser, которую я имею в своем виде лезвия. Так что веб. php будет иметь только это:

Route::PUT('/admin/users/{user}', 'AdminController@editUser')->name('admin.editUser');

Спасибо всем за участие. И отдельное спасибо Kerbholz.

0 голосов
/ 02 мая 2020

Если я правильно понимаю, похоже, что каждый /admin маршрут в вашем route.php имеет префикс с именем admin.

Так что, возможно, попробуйте назвать маршрут как admin.makeAdmin и назовите его на ваш взгляд вот так:

<form action="{{route('admin.makeAdmin', $user->id)}}" method="POST">

Посмотрите, работает ли оно.

0 голосов
/ 02 мая 2020

Используйте вот так

<form action="{{route('makeAdmin',['user'=>$user->id])}}" method="POST">
0 голосов
/ 02 мая 2020

В маршруте для makeAdmin просто укажите POST вместо PUT. Потому что в форме HTML вы упомянули этот метод

...