2013-10-25 2 views
2

Laravel 4에 자체 유효성 검사 클래스를 작성하려고합니다. 이렇게하려면 app/validators이라는 새 디렉터리를 만들었습니다. 나는 다음 composer.json classmap에이 디렉토리를 추가 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을 수행하십시오.

관련 문제