我创建了一个名为 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');
答案 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中的每个操作/方法找到正确的url
或route name
。
如果使用Route::controller('/', 'IndexController');
声明路线,则必须手动创建IndexController
,并且在此控制器(RESTfull)中,您可以使用http
动词创建方法(GET
,POST
等)作为前缀
public function getIndex()
{
//
}
对于此操作/方法,您的网址将为IndexController
,并且它应该是来自地址栏的正常GET
请求。
要提交表单,您可以声明一个帖子方法,如:
public function postSave()
{
//
}
因此,您可以使用表单中的POST
方法向此操作/方法提交表单,表单的操作将为http://example.com/save
,而不包含动词。您始终可以运行php artisan routes
命令查找控制器方法/功能的url/route name
。有关详细信息,请查看documentation。