2013-10-25 44 views
2

我試圖在Laravel 4中編寫自己的驗證類。爲此,我創建了一個名爲app/validators的新目錄。然後我這個目錄添加到composer.json類映射就跑composer update,就像這樣:自定義驗證類未在Laravel 4中加載

"classmap": [ 
    "app/commands", 
    "app/controllers", 
    "app/models", 
    "app/validators",   <- added here 
    "app/database/migrations", 
    "app/database/seeds", 
    "app/tests/TestCase.php" 
] 

我的驗證類看起來是這樣的:

class LinkValidation extends Illuminate\Validation\Validator { 
{ 
    public function validateHost($field, $value, $params) 
    { 
     return $value == 'test'; 
    } 
} 

,並在我的控制,我想擴展驗證像這樣:

Validator::extend('awesome', '[email protected]'); 

然而,加載頁面時,我得到這個錯誤

{ 
    "error":{ 
     "type":"ReflectionException", 
     "message":"Class LinkValidation does not exist", 
     "file":"C:\\xampp\\htdocs\\laravel\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php", 
     "line":301 
    } 
} 

任何想法爲什麼Laravel不會加載類?我認爲它會自動添加到作曲家的班級地圖中。

+0

更新自動裝載器文件的命令是'composer dump-autoload'。文檔在這裏:http://getcomposer.org/doc/03-cli.md#dump-autoload –

回答

1

不知道它爲什麼不起作用,但我認爲你應該嘗試將它添加到app/start/global.php

/* 
|-------------------------------------------------------------------------- 
| Register The Laravel Class Loader 
|-------------------------------------------------------------------------- 
| 
| In addition to using Composer, you may use the Laravel class loader to 
| load your controllers and models. This is useful for keeping all of 
| your classes in the "global" namespace without Composer updating. 
| 
*/ 

ClassLoader::addDirectories(array(

    app_path().'/commands', 
    app_path().'/controllers', 
    app_path().'/models', 
    app_path().'/database/seeds', 
    app_path().'/validators', 

)); 
+0

似乎工作,謝謝!我仍然希望通過作曲家來完成,但是現在這樣做。 :) –

1

創建新的類對象後總是做composer dumpautoload