2015-01-14 1 views
0

Laravel application을 공부 중이며이 응용 프로그램에서 이상한 동작이 발견되었습니다.이 함수가 Validator 클래스를 사용하지 않고 사용자 입력의 유효성을 검사 할 수있는 이유는 무엇입니까?

이 애플리케이션에는 몇 가지 웹 양식이 있습니다. POST 요청을 처리하는 대부분의 컨트롤러 메서드는 Validator::make()을 사용하여 사용자 입력의 유효성을 검사하지만 Validator::make()을 사용하지 않는 2 가지 방법을 찾았습니다.

처음에는이 두 형식에 입력 유효성 검사가 없다고 생각했습니다. 그러나 놀랍게도 웹 양식이 여전히 사용자 입력의 유효성을 검사 할 수 있음을 발견했습니다.

예 1 (검증기)

  1. Controller Method 1 (라인 (60) - 67)
  2. Controller Method 2 (라인 62-68)

$rules = array(
    'title' => 'required|min:3', 
    'content' => 'required|min:3' 
); 
... 
$validator = Validator::make(Input::all(), $rules); 

예 2 : (검사기를 사용하지 않는)

  1. Controller Method 3 (라인 89-111)
  2. Controller Method 4 (라인 27-47)

$this->user->username = Input::get('username'); 
$this->user->email = Input::get('email'); 
$this->user->password = Input::get('password'); 
... 
$this->user->save(); 

이유를 알고 싶습니다. 예 2의 함수는 Validator을 사용하지 않고 사용자 입력의 유효성을 검사 할 수 있습니까?

답변

2

이 응용 프로그램의 사용자 모델은 ConfideUser 특성을 사용합니다. trait in the confide package을 살펴보면 save() 메서드가 있으며 Laravel의 기본 메서드를 재정의한다는 것을 알 수 있습니다.

/** 
* Overwrites the original save method in order to perform 
* validation before actually saving the object. 
* 
* @param array $options 
* 
* @return bool 
*/ 
public function save(array $options = array()) 
{ 
    if ($this->isValid()) { 
     return parent::save($options); 
    } 
    return false; 
} 

모든 것이 괜찮은 경우에만 $this->isValid()을 호출하고 저장합니다. 그리고 여기 isValid()입니다 :

/** 
* Checks if the current user is valid using the ConfideUserValidator. 
* 
* @return bool 
*/ 
public function isValid() 
{ 
    // Instantiate the Zizaco\Confide\UserValidator and calls the 
    // validate method. Feel free to use your own validation 
    // class. 
    $validator = App::make('confide.user_validator'); 
    // If the model already exists in the database we call validate with 
    // the update ruleset 
    if ($this->exists) { 
     return $validator->validate($this, 'update'); 
    } 
    return $validator->validate($this); 
} 

그것은 털어 자신의 UserValidator의 인스턴스를 만들고 현재 모델의 유효성을 검사하는 것을 사용한다.