【问题标题】:Laravel 5.1 NotFoundHttpException in RouteCollection.php line 161:RouteCollection.php 第 161 行中的 Laravel 5.1 NotFoundHttpException:
【发布时间】:2016-07-03 19:37:31
【问题描述】:

当我尝试访问 delayTime 方法时出现此错误。我看不出我做错了什么。我有这样的路线设置:

Route::post('quiz', [ 'as' => 'quiz', 'uses' => 'QuizController@create' ]);
Route::get('quiz/token/{quizByToken}', [ 'as' => 'quiz.token', 'uses' => 'QuizController@getQuizByToken' ]);
Route::get('quiz/code/{quizByCode}', [ 'as' => 'quiz.code', 'uses' => 'QuizController@getQuizByCode' ]);
Route::get('quiz/id/{quiz}/players', [ 'as' => 'quiz.players', 'uses' => 'QuizController@getQuizPlayers' ]);
Route::get('quiz/token/{quizByToken}/players/highscore', [ 'as' => 'quizzes.player.highscore', 'uses' =>    'PlayerController@highscore' ]);
Route::put('quiz/nextQuestion/{quizByToken}', [ 'as' => 'quizzes.nextQuestion', 'uses' => 'QuizController@nextQuestion' ]);
Route::get('quiz/poll/{quiz}', [ 'as' => 'quizzes.poll', 'uses' => 'QuizController@currentQuestion' ]);
Route::put('quiz/poll/token/{quizByToken}/delay-current/{delayTime}', [ 'as' => 'quizzes.delayTime', 'uses' => 'QuizController@delayTime' ]);

错误信息:

NotFoundHttpException in RouteCollection.php line 161 in RouteCollection.php line 161
at RouteCollection->match(object(Request)) in Router.php line 750
at Router->findRoute(object(Request)) in Router.php line 659
at Router->dispatchToRoute(object(Request)) in Router.php line 635
at Router->dispatch(object(Request)) in Kernel.php line 236
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139

【问题讨论】:

  • 你能显示错误吗?
  • 这就是标题中所说的,这是简短版本:RouteCollection.php 第 161 行中的 NotFoundHttpException:RouteCollection.php 第 161 行中的 RouteCollection->match(object(Request)) 在路由器中。 php 第 750 行 Router->findRoute(object(Request)) 在 Router.php 第 659 行 Router->dispatchToRoute(object(Request)) 在 Router.php 第 635 行 Router->dispatch(object(Request)) 在 Kernel .php line 236 at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
  • 检查您的表单,如果方法是 post 或 put。
  • 这是一个put方法

标签: laravel laravel-routing


【解决方案1】:

您正在使用以下路线:

Route::put(
    'quiz/poll/token/{quizByToken}/delay-current/{delayTime}',
    [ 'as' => 'quizzes.delayTime', 'uses' => 'QuizController@delayTime'
]);

这意味着当您提交表单时,您必须传递一个名为 _token 的隐藏输入字段,其中包含值 put,例如:

<form method='POST'>
    <input type="hidden" name="_method" value="PUT" />
    <!-- Other Fields -->
</form>

我确定你错过了。您可以查看Form Method Spoofing 了解有关此主题的更多信息。

【讨论】:

  • 其实它只是一个api,所以我没有任何形式,我只是获取json数据
  • 然后将_method='put' 与您的json 有效载荷一起传递。
  • 实际上是我将参数作为数组而不是字符串传递
猜你喜欢
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
  • 2018-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多