2013-05-31 2 views
2

내 패키지 클래스에서 Validator 클래스를 사용하려고합니다. 이제 Facades를 사용하면 클래스를 포함하고 사용하는 것이 약간 까다로워졌습니다.Laravel 4 - 유효성 검사기로 패키지 유효성 검사

use Illuminate\Validation\Validator 
... 
protected function valid($request) 
{ 
    return Validator::make($request, ['url'=>'required|url'])->passes(); 
} 

나를 포기 끝 : 나는 외관 자체를 사용하지하고 있기 때문에 사실

PHP Fatal error: Call to undefined method Illuminate\Validation\Validator::make()

합니다. 유효성 검사기 클래스 생성자에서 상대 : 여기

__construct(\Symfony\Component\Translation\TranslatorInterface $translator, array $data, array $rules, array $messages) : void 

그리고 당신이 다음에 사용을 변경하려면 패키지의 유효성 검사기 외관을 사용하려는 경우 내가 도움 :

+0

외관을 사용하지 않는 이유는 무엇입니까? – crynobone

+0

저는이 Facade를 사용하고 싶습니다. 실제로이 게시물 뒤에있는 나의 목표입니다. – Mulkave

답변

6

을 필요로하는 곳에입니다 중 하나

use Validator; 

또는 :

use Illuminate\Support\Facades\Validator; 

또는 당신은 무엇을 인 (발리 공장의 인스턴스를 삽입 할 수 실제로 유효성 검사기 인스턴스를 종속성으로 클래스에 추가합니다. 나는 당신이 당신의 패키지를 서비스 제공자와 함께 설정하고 있다고 가정하고있다.

$this->app->bind('Package', function($app) 
{ 
    return new YourPackage($app['validator']); 
}); 

그런 다음 생성자에서 해당 클래스의 유효성 검사기 속성을 설정해야합니다.

public function __construct(\Illuminate\Validation\Factory $validator) 
{ 
    $this->validator = $validator; 
} 

이제 새 유효성 검사기 인스턴스를 만들 수 있습니다.

return $this->validator->make($request, ['url' => 'required|url'])->passes(); 
+0

응용 프로그램이 부팅 될 때만 유효하기 때문에 Validator 별칭을 사용하지 말라고 조언합니다. Illuminate \ Support \ Facades \ Validator 또는 $ app [ 'validator']를 사용하십시오. – crynobone

+0

이 서비스 제공 업체에서 작동한다고 생각하지만 테스트는 어떻게해야합니까? – Mulkave

+0

유효성 검사기 인스턴스를 조롱하면 단위 테스트를 수행하는 좋은 방법이 될 것입니다. – crynobone

관련 문제