robclancy/validation

There is no license information available for the latest version (dev-master) of this package.

A validations package built for PHP 5.4 and easy validation for framworks.

dev-master 2013-03-29 15:42 UTC

This package is auto-updated.

Last update: 2024-12-22 04:48:03 UTC


README

This isn't ready for use.

The following is a dump to explain things for feedback.

First we have an alias, Validatable will alias RobClancy\Validation\Illuminate.

To use this for model validation you would do...

// Note most of this would be in a base class
class Post extends Eloquent {
	
	// We import the validator methods
	use Validatable;
	
	// Define the input and rules to validate, basic post validation
	public function defineInput()
	{
		$this->input('user_id')->required()->integer();
		$this->input('post')->required();
	}
	
	// Then we have our save method
	public function save()
	{
		if ( ! $this->validate($this->attributes))
		{
			return false;
			// User can now call $this->getErrors() for a list of errors
		}
		
		// Doing this means we can push Input::all() into the model and the validator will filter out what we need
		$this->attributes = $this->getValidatedInput();
		
		return parent::save();
	}
}

So the above in a controller would be...

class PostController extends Controller {

	...
	
	public function postIndex()
	{
		$post = new Post(Input::all());
		if ( ! $post->save())
		{
			return Redirect::back()->withErrors($post->getErrors(), $post->getInput());
		}
		
		return Redirect::to('success/page');
	}
}```

Then I had a use case for logging in, didn't want to validate input before sending to authentication on a model so can do this instead...
```php
class LoginController extends Controller {

	use Validatable;

	// getLogin method etc here

	// Define the input to validate against
	public function defineInput()
	{
		$this->input('email')->required()->email();
		$this->input('password')->required();
	}

	// And once again use the new methods here
	public function postIndex()
	{
		if ( ! $this->validate())
		{
			return Redirect::back()->withErrors($this->getErrors());
		}
		
		// run authentication
	}
}

In the controller example you can also skip the defineInput method and do this instead...

class LoginController extends Controller {

	use Validatable;
	
	...
	
	
	public function postIndex()
	{
		$validate = $this->validate(function($add)
		{
			$add->input('email')->required()->email();
			$add->input('password')->required();
		});
	
		if ( ! $validate)
		{
			return Redirect::back()->withErrors($this->getErrors());
		}
		
		// authenticate
	}
}