heihachi88
5/31/2014 - 9:02 AM

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');
    }