2013-05-08 2 views
0

환상적인 Laravel Framework를 사용하고 있지만 단일 전자 메일 필드의 유효성을 검사하는 데 어떤 방법으로도 해결할 수없는 유효성 검사 문제가 있습니다.Laravel 3 단일 입력 양식의 유효성 확인

내 폼 입력은 다음과 같습니다

{{ Form::email('email', Input::old('email'), array('id' => 'email', 'class' => 'span4', 'placeholder' => Lang::line('newsletter.email')->get($lang), 'novalidate' => 'novalidate')) }} 

내 컨트롤러

public function post_newsletter() { 

    $email = Input::get('email'); 

    $v = Newsletter::validator($email, Newsletter::$rules); 

    if($v !== true) 
    { ... } 
    else 
    { ... } 
} 

내가 훨씬 복잡한 형태 만에 성공이 너무 많은 시간을 했어

class Newsletter extends Eloquent { 

/** 
* Newsletter validation rules 
*/ 
public static $rules = array(
    'email' => 'required|email|unique:newsletters' 
); 

/** 
* Input validation 
*/ 
public static function validator($attributes, $rules) { 
    $v = Validator::make($attributes, $rules); 

    return $v->fails() ? $v : true; 
} 
} 

내 모델 유효한 이메일을 입력해도 필수 fied에 관한 오류 메시지가 표시됩니다. 누락 된 것이 있습니까? 어쩌면 사실 하나의 단일 필드를 검증하려고합니까? 나는 정말로 이런 일이 일어나지 않는다.

+0

정확하게 디버깅하려고 시도한 적이 있습니까? 그것이 없어져서는 안되거나 없어져서는 안되는 때가 지나가고 있습니까? 유효성 검사를 실행 한 후에'Validator' 객체를 덤프 해보십시오. –

+0

유효성 검사 오류는 이메일이 필요하다는 것입니다. 즉, 내 문제가 있으며 유효성 검사에서 규칙을 통과하지 못했지만 이것이 발생하는 이유가 표시되지 않습니다. –

답변

1

나는 당신이 속성의 배열 (또는 기본적으로 데이터의 배열)을 전달하지 않기 때문일 수 있다고 생각한다.

compact 함수를 사용하여 이와 같은 배열을 생성 해보십시오.

array('email' => $email); 

어떻게해야합니까?

$v = Newsletter::validator(compact('email'), Newsletter::$rules); 
+0

네, 맞습니다. 훌륭하고 자체적으로 문서화 된 Laravel은 make 메쏘드의 $ 속성은 배열이라고 말합니다. 그래서 필자가 수행 한 다른 모든 복잡한 형식에서는 배열에 여러 속성이 전달 되었기 때문에 유효성 검사가 제대로 된 것입니다. –