2013-09-05 219 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()調用中收到「沒有這樣的文件或目錄」錯誤,所以我不確定這是您問題的唯一原因。但這可能是一個開始。