【问题标题】:Laravel route to controller not workingLaravel 到控制器的路由不起作用
【发布时间】:2015-10-17 13:35:55
【问题描述】:

我正在尝试将新控制器添加到现有的 laravel 项目中。该应用程序已经在/users 有一些页面,我正在尝试添加一个单独工作的 RESTful API。我希望在 api/users 上提供 API。

我已经使用 PHP artisan 创建了控制器:

php artisan controller:make ApiUsersController

我已将以下内容添加到我的路线中:

Route::controller('api/users', 'ApiUsersController');

但是,当我点击 URL 时,我只收到该网站的“找不到页面”消息。

有什么我遗漏的吗?

【问题讨论】:

  • 检查:- Route::get('api/users', 'ApiUsersController');
  • Route::get('api/users', 'ApiUsersController@index'); 工作。

标签: php laravel-4 routes controllers


【解决方案1】:

您遇到的问题似乎是您使用了Route::controller 而不是Route::resource

Route::resource 将路由映射到控制器生成器默认创建的七个 RESTful 方法。 Route::controller 将它们映射到您自己添加的方法,这些方法将 HTTP 方法作为其名称的一部分,在您的情况下,如果您有一个名为 getIndex 的方法,它将在对 /api/users/index 的 GET 请求中调用,或者如果您有一个名为 postStore 的函数将在对 /api/users/store 的 POST 请求中调用。

为了向路由添加 API 前缀,您可以使用以下内容:

Route::group(['prefix' => 'api'], function() {
    Route::resource('users', 'ControllerName');
});

您还可以在同一个回调中在 API 中添加任何其他控制器。

【讨论】:

  • 我知道有一个Route::resource() 方法。不过,我将如何在其前面加上 api/,因为我看到的示例似乎只是使用模型名称和控制器名称作为参数。
  • 对不起,我完全错过了。我已经更新了我的答案以反映这一点。
  • Route::controller 这个方法需要特定的 PHP 版本吗?我可以在 php 7.1 及更低版本中成功运行它,但不能在 php 7.3 上运行。
猜你喜欢
  • 2016-12-14
  • 2015-06-10
  • 1970-01-01
  • 2014-08-26
  • 1970-01-01
  • 2013-06-19
  • 2017-02-01
  • 2013-10-05
  • 1970-01-01
相关资源
最近更新 更多