Laravel NotFoundHttpException, хотя маршрут существует

Я использую vue.js и Laravel 5.1 для создания небольшого приложения для совместного использования файлов.

Все работает отлично, но теперь я хотел убедиться, что владелец каждого файла может удалить пользователей из своего файла (сначала он должен был совместно использовать файл с этими пользователями), поэтому я делаю запрос PUT на URL с именем /files/share .

Мой маршрут Laravel выглядит так:

 Route::put('/files/share', 'FileController@test'); 

Когда я запускаю php artisan route:list попадает в список.

Код на стороне клиента выглядит следующим образом:

 this.$http.put('/files/share', { some_data }, function(data) { if(data.error){ this.$set('error', data.error); } else { this.$set('file', data); } }); 

Точная ошибка, которую я получаю, такова:

 2/2 NotFoundHttpException in Handler.php line 46: No query results for model [App\File]. 1/2 ModelNotFoundException in Builder.php line 129: No query results for model [App\File]. 

Но приложение даже не доходит до контроллера, если я просто что-то возвращаю, ошибка там же.

С маршрутами Laravel порядок имеет значение. Маршруты с динамическими сегментами, такими как files/{file} или маршруты ресурсов, всегда должны определяться после статических. В противном случае Laravel будет интерпретировать часть вашего URL как идентификатор.

Итак, как вы сами поняли, вам просто нужно изменить порядок ваших маршрутов:

 Route::put('/files/share', 'FileController@test'); Route::resource('/files', 'FileController'); 

Благодаря lukasgeiter я снова проверил маршруты и должен был определить маршрут / files / share до моего маршрута ресурса RESTful.