2013-09-05 174 views
1

我对Laravel框架非常陌生,并且试图在浏览器中加载一个简单的控制器,以便慢慢掌握一些事情。Laravel控制器不能正常工作

我的影片名为users.php的的laravel /应用/控制器/文件夹内文件,它看起来像这样:

class UsersController extends BaseController 
{ 
    public $restful = true; 

    public function action_index() 
    { 
     echo 'hi'; 
    } 
} 

在routes.php文件文件,我有

Route::get('users', '[email protected]'); 

但是,当我去

http://localhost:8888/laravel/public/users 

我笑脸相迎,说:“ReflectionException消息类UsersController不存在”

enter image description here

我不知道这是因为我没有安装PHP的mcrypt扩展。但是,当我检查MAMP上的php.ini文件时,它说它已启用。一旦输入

which PHP 

在我的终端里,它说/ usr/bin/php。所以,它可能不会使用正确版本的PHP。

我不完全确定这是一个路由问题,还是源于缺少重要的PHP扩展。

非常感谢!

回答

3

您需要使用Route ::控制器方法来引用您的控制器:

Route::controller('test', 'TestController'); 

...和重命名文件(如Cryode提到)是TestController.php

注 - 如果您想使用文件名作为test.php,那么您将需要使用composer更新自动载入设置。

最后,对于控制器的方法名的格式在Laravel 4改变,尝试重命名方法

public function action_index() {} 

public function getIndex() {} 

get表示HTTP GET请求......同申请post(HTTP POST)和any(GET或POST ..)

+0

说找不到命令。在推出新课程后需要更新课程是什么?为什么Laravel再次比CodeIgniter更好? – Lance

+0

对不起,我添加新的类后更新类错误..这不适用于此 - 我会更新上述。你仍然需要改变你的方法名称 – msturdy

+0

@Lance你的问题是使用Route :: get ..看一看 – msturdy

2

我不熟悉Laravel的源代码部分,所以我并不完全确定这是问题所在,但是您的控制器文件名应与控制器类名相匹配,包括大写字母。

所以users.php应该是UsersController.php。现在,当我自己这样做时,我在include()调用中收到“没有这样的文件或目录”错误,所以我不确定这是您问题的唯一原因。但这可能是一个开始。