如何在laravel中创建资源路由

时间:2014-01-28 15:03:35

标签: php laravel laravel-4

我创建了一个名为 HomeController 的控制器及其名为

的方法
getIndex() 

index()

之后我做了一个路由

Route::resource('home', 'HomeController');

但它会给我这个错误

Controller method not found.

我在这条路线上工作很好

Route::controller('/', 'IndexController');

请帮忙

更新
感谢你的帮助.. 我是laravel的初学者。所以我在我的路由中犯了一个大错误,我先忘掉了先出规则。所以我必须从

重新排序我的路线
Route::controller('/', 'IndexController'); 
Route::resource('homes', 'HomesController');

Route::resource('homes', 'HomesController');
Route::controller('/', 'IndexController'); 

4 个答案:

答案 0 :(得分:2)

如果您手动创建控制器,请检查您是否扩展了BaseController类。

您可以安装https://github.com/JeffreyWay/Laravel-4-Generators

Jeffrey Way的Laravel命令行实用程序和一个命令:

php artisan generate:resource

您将拥有完整的REST-ful资源 - 从路径到模型和控制器甚至迁移表。

答案 1 :(得分:1)

如果您使用的是资源控制器,则只需要“索引”方法。根据您的路线,您必须输入:yourdomain.com/home才能访问Home Controller的索引。如果您想使用与主页相同的索引方法,则需要将其添加到路径文件中:

Route::get('/', 'HomeController@index');

另外,make(如果你还没有)运行:

composer dump-autoload

答案 2 :(得分:1)

你也必须这样做:

php artisan controller:make HomeController

在你的终端!

答案 3 :(得分:1)

要创建资源丰富的控制器,您应该从终端/命令提示符运行以下artisan命令

php artisan controller:make HomeController

这将在controllers文件夹中创建一个资源丰富的控制器,如果需要,您可以提供一个路径作为命令的选项,如

php artisan controller:make HomeController --path="app/controllers/admin"

它将使用7方法创建一个资源丰富的控制器,并查看每个方法的路由映射,您可以从终端/命令提示符运行routes命令,如

php artisan routes

此命令将显示所有路由的表以及每个路由使用的action / url和name,因此您可以为资源丰富的comtroller中的每个操作/方法找到正确的urlroute name

如果使用Route::controller('/', 'IndexController');声明路线,则必须手动创建IndexController,并且在此控制器(RESTfull)中,您可以使用http动词创建方法(GETPOST等)作为前缀

public function getIndex()
{
    //
}

对于此操作/方法,您的网址将为IndexController,并且它应该是来自地址栏的正常GET请求。

要提交表单,您可以声明一个帖子方法,如:

public function postSave()
{
    //
}

因此,您可以使用表单中的POST方法向此操作/方法提交表单,表单的操作将为http://example.com/save,而不包含动词。您始终可以运行php artisan routes命令查找控制器方法/功能的url/route name。有关详细信息,请查看documentation