【问题标题】:Laravel 4 store() method error MethodNotAllowedHttpExceptionLaravel 4 store() 方法错误 MethodNotAllowedHttpException
【发布时间】:2014-08-16 12:57:52
【问题描述】:

我环顾四周,看看是否能找到这个特定的问题,但到目前为止都没有成功。

问题很简单。我正在使用工匠生成的 UsersController 来处理 /users 目录上的 RESTful 通信。 GET 工作得很好,但是每当我向 /users 发布表单时,它并没有像应有的那样正确执行 store() 方法,它会引发 MethodNotAllowedHttpException 错误。当我创建一个新的处理程序 postNew() 并 POST 给用户/新用户时,它工作得很好。我可以使用它,但我真的很想找出问题所在,以便我可以使用标准的 RESTful 方法。

此外,我没有使用 Laravel 的表单生成器,因为我打算缓存每个页面以提高速度,并且不想为我发送的每个表单生成唯一的 id。我在另一篇文章中看到这可能会导致问题,但无法找到将其集成到解决方案中的方法。

<form id="signup-form" method="POST" action="users">                         
  <label>First Name:</label>                    
  <input type="text" name="firstName">                  
  <label>Last Name:</label>
  <input type="text" name="lastName">
  <input type="submit" value="Sign Up Free!">
</form>

这是我的代码。

【问题讨论】:

  • 你是如何为这个新控制器设置路由的?
  • 在命令行中输入php artisan controller:make UsersController。开箱即用的配置不起作用,这让我感到困惑。
  • 您确定,您使用了正确的HTTP 方法来提交表单吗?
  • 我正在用我的代码更新帖子。

标签: php laravel laravel-4


【解决方案1】:

controller:make 只会创建资源控制器,不会定义其路由。

由于您提到您创建了一个新的控制器方法postNew(),并且当您向users/new 发送 POST 请求时它可以工作,所以我假设您已经创建了一个 RESTful 控制器 路由和不是 资源 路线。

RESTful 控制器路由(不兼容controller:make):

Route::controller('users', 'UsersController');

资源控制器路由(兼容controller:make):

Route::resource('users', 'UsersController');

Controllers docs pageRESTfullResource 中概述了这两种控制器类型之间的区别。

【讨论】:

  • 太棒了!我把它当作 Route::controller(...),而不是 Route::resource(...)。将其更改为资源控制器可以立即解决问题。
猜你喜欢
  • 2013-07-04
  • 2013-09-18
  • 2018-08-07
  • 2014-08-19
  • 2017-09-23
  • 2019-03-25
  • 1970-01-01
  • 2014-09-16
  • 1970-01-01
相关资源
最近更新 更多