/** * Validate the model instance * * @param array $rules Validation rules * @param array $customMessages Custom error messages * @return bool */ public function validate(array $rules = array(), array $customMessages = array()) { // check for overrides, then remove any empty rules $rules = empty($rules) ? static::$rules : $rules; foreach ($rules as $field => $rls) { if ($rls == '') { unset($rules[$field]); } } if (empty($rules)) { return true; } $customMessages = empty($customMessages) ? static::$customMessages : $customMessages; if ($this->forceEntityHydrationFromInput || empty($this->attributes) && $this->autoHydrateEntityFromInput) { // pluck only the fields which are defined in the validation rule-set $attributes = array_intersect_key(Input::all(), $rules); //Set each given attribute on the model foreach ($attributes as $key => $value) { $this->setAttribute($key, $value); } } $data = $this->attributes; // the data under validation // perform validation $validator = Validator::make($data, $rules, $customMessages); $success = $validator->passes(); if ($success) { // if the model is valid, unset old errors if ($this->validationErrors->count() > 0) { $this->validationErrors = new MessageBag(); } } else { // otherwise set the new ones $this->validationErrors = $validator->messages(); // stash the input to the current session if (Input::hasSessionStore()) { Input::flash(); } } return $success; }