【问题标题】:MethodNotAllowedHttpException in RouteCollection.php line 218:RouteCollection.php 第 218 行中的 MethodNotAllowedHttpException:
【发布时间】:2017-01-26 08:56:45
【问题描述】:

我正在尝试为时事通讯构建一个控制器,她是我的代码:

控制器

    public function postNews(Request  $request, $user) {
     $this->validate($request, [ 'email' => 'required | email' ]);

     $user = User::findOrFail($id);
     $data = array(
         'email' => $request->email);

         $token = $request->input('g-recaptcha-response');
         if (strlen($token) > 0 ) {

         Mail::send('emails.newsletter', $data, function( $message ) use ($data) {
         $message->from($data['email']);
         $message->to($user->email, $user->name)->subject('A-Studio News Letter');
         //$message->subject($data['subject']);
         });
         Session::flash('success', 'Grazie per esserti iscritto alla nostra news letter!');
         return  view('blog.posts')->withPosts($posts);
         }else {
         return view('pages.nobot');
         }
}

路线

     Route::post('posts/{user}', ['uses' => 'BlogController@postNews', 'as' => 'blog.posts']);

回应 RouteCollection.php 第 218 行中的 MethodNotAllowedHttpException:

有什么想法吗?

谢谢。

【问题讨论】:

  • 仔细查看您的路线。是否有其他路线具有'posts/{var}'?如果它是在您的 POST 路由之前定义的,它将覆盖它并且您会得到一个 MethodNotAllowedHttpException,因为该路由的格式不正确。
  • 请贴出调用blog.post路由的代码。
  • 使用 post 路由,我猜您正在提交表单。为什么要使用动态 URI {user} 提交表单?发送这篇文章时,你对路由中的 {user} 变量做了什么?
  • @Michel Yep 我正在提交一个表单,它只有一个输入(电子邮件),实际上它是一个订阅表单,一个输入一个按钮。我使用的是 dyn uri,因为会弹出一个 Whoops 要求 2 Missing 参数..
  • @RoemerBakker 这里是博客路由列表: Route::get('posts', 'BlogController@getPosts'); ; Route::post('posts/{user}', ['uses' => 'BlogController@postNews', 'as' => 'blog.posts']); Route::get('blog/{title}', ['uses' => 'BlogController@getArticoli', 'as' => 'blog.articoli']);

标签: laravel


【解决方案1】:
<form method="post" action="/posts">
<input name="email" type="email">
<button type="submit">subscribe</button>
</form>

Route::post('/posts', 'YourController@userSubscribe');

public function userSubscribe(Request $request){
  $data = $request->input('email');
  //Validate $data if necessary and save in the DB

}

这应该可行。

【讨论】:

  • 这很有帮助,tankyou
  • 很高兴它有帮助。对于可能遇到相同问题的其他人,您可以将答案标记为正确。
【解决方案2】:

你应该删除,

   Route::post('posts/{user}', '....');        

用作,

   Route::post('posts', '....');        

并且还可以在参数中使用带有 $user 变量的控制器功能。

我希望这会对你有所帮助。

【讨论】:

    【解决方案3】:

    你应该发出 POST 请求

     <form action="posts/{{user}}" method="POST">
    

    【讨论】:

    • 嗨,我做到了,我得到了这个 mex:未定义变量:id,坦克寻求帮助!
    猜你喜欢
    • 2017-01-03
    • 2016-11-21
    • 2017-08-09
    • 2017-10-12
    • 2017-03-13
    • 2016-11-22
    • 2016-12-26
    • 2016-10-31
    • 1970-01-01
    相关资源
    最近更新 更多