Validation as a service http://tntstudio.us/blog/laravel-form-validation-as-a-service
namespace Validation;
abstract class Validator {
protected $input;
public static $rules;
protected $messages;
private $errors;
public function __construct($input) {
$this->input = $input;
}
public function fails() {
$validation = \Validator::make($this->input, static::$rules, $this->messages);
if ($validation->fails()) {
$this->errors = $validation->errors();
return true;
}
return false;
}
// display errors
public function errors() {
return $this->errors;
}
}
namespace Validation;
class PageFormValidator extends Validator {
public static $rules = array(
'title' => 'required|min:3',
'body' => 'required|min:10'
);
public $messages = array(
'required' => 'The :attribute field is required',
'title.min' => 'Not enough characters in :attribute, minimum is 3',
'body.min' => 'Not enough characters in :attribute, minimum is 10'
);
}
public function savePage() {
// Validation
$validator = new PageFormValidator(Input::all());
if ($validator->fails()) {
return Redirect::action('PageController@create')->withErrors($validator->errors());
}
$input = array(
'title' => Input::get('title'),
'body' => Input::get('body'),
'slug' => Slug::make(Input::get('title')),
);
$this->page->saveCreate($input);
return Redirect::action('PageController@home');
}