Метод ответа Laravel не разрешен

Я использую этот код из текущей документации Laravel

return redirect()->action(
    'UserController@profile', ['id' => 1]
);

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

return redirect()->action('ProjectController@showProject',['id'=> 2]); 

Мой маршрут: Route::get('/crm/project/{id}', 'ProjectController@showProject');

Согласно моему F12, это мой URL-адрес запроса http://127.0.0.1:8000/back/crm/project/2 Что правильно. Но я получаю следующую ошибку: 405 Method Not Allowed.

Это начало моей трассировки стека:

{сообщение: "", исключение: "Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException",…}

Заранее спасибо.

Изменить: добавлен маршрут.


person Armando van Oeffelen    schedule 18.01.2019    source источник
comment
можешь показать свой маршрут   -  person Shaielndra Gupta    schedule 18.01.2019
comment
Route::get('/crm/project/{id}', 'ProjectController@showProject'); мой маршрут.   -  person Armando van Oeffelen    schedule 18.01.2019
comment
что вы нашли URL-адрес после перенаправления, где вы получаете эту ошибку   -  person Shaielndra Gupta    schedule 18.01.2019
comment
Какой? @ShaielndraGupta Я нахожу эту ошибку, если захожу в свой Inspect Element->network->Preview/Headers/Respone   -  person Armando van Oeffelen    schedule 18.01.2019
comment
Я говорю об URL-адресе вашего запроса, по которому вы получаете сообщение об ошибке. Вы можете найти его в inspect-›network и просмотреть заголовки.   -  person Shaielndra Gupta    schedule 18.01.2019
comment
@ShaielndraGupta : http://127.0.0.1:8000/back/crm/project/2. об этом же сказано в моем посте.   -  person Armando van Oeffelen    schedule 18.01.2019
comment
Вы можете сделать php artisan route:list в своем терминале и поделиться результатами маршрута   -  person Shaielndra Gupta    schedule 18.01.2019
comment
Давайте продолжим это обсуждение в чате.   -  person Armando van Oeffelen    schedule 19.01.2019
comment
Можете ли вы опубликовать свой метод showProject?   -  person Prafulla Kumar Sahu    schedule 20.01.2019


Ответы (3)


Перенаправления всегда выполняются методом GET. Я предполагаю, что в web.php у вас есть этот маршрут, определенный с использованием другого метода HTTP (например, PUT или POST) - поэтому вы получаете эту ошибку. Взгляните на файл web.php и убедитесь, что вы используете метод GET или выполните перенаправление на другой URL-адрес.

person Marcin Nabiałek    schedule 18.01.2019
comment
Я использую метод GET на своем маршруте, куда я хочу перенаправить. Или я должен использовать его и на маршруте GET? Поскольку маршрут, которым я сейчас пользуюсь, является маршрутом PUT. Маршрут, на который я хочу перенаправить: Route::get('/crm/project/{id}', 'ProjectController@showProject'); Маршрут, который в данный момент используется: Route::put('/crm/project/{id}', 'ProjectController@update'); - person Armando van Oeffelen; 18.01.2019

Это может быть непросто.

Я думаю, вам нужно будет изменить метод. Проверьте свой web.php на наличие объявления для этого маршрута. также лучше использовать группу промежуточного программного обеспечения для вашего маршрута.

Это просто говорит о том, что ваш метод не разрешен, потому что он был объявлен с другим методом.

person Moubarak Hayal    schedule 18.01.2019

проблема, с которой вы столкнулись, потому что вы использовали одно и то же имя функции для двух разных методов, один для получения и один для ввода, поэтому вы получаете сообщение об ошибке, потому что вы передаете действие в перенаправлении, поэтому его поиск действия и обнаружение этого действия с помощью метода put

использовать это для перенаправления

return redirect()->route('/back/crm/project/', ['id' => 1]);

Еще одна вещь, которую я хочу предложить вам никогда не использовать перенаправление в запросе ajax, это не очень хорошая практика программирования, и она вообще не будет работать, если у вас есть метод put или post в вашем ajax.

сделайте успешный ответ и обновите свое местоположение, вот и все

person Shaielndra Gupta    schedule 18.01.2019