laravel中validator的使用方法介绍(代码示例)

laravel中validator的使用方法介绍(代码示例)

内容导读

收集整理的这篇技术教程文章主要介绍了laravel中validator的使用方法介绍(代码示例),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5156字,纯文字阅读大概需要8分钟

内容图文

本篇文章给大家带来的内容是关于laravel中validator的使用方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

web 开发过程中经常会需要进行参数验证,laravel 中我们常用 validator 或者 request 这两种方法来进行验证,但是这两种验证都不是很方便进行自定义提示信息,自定义验证规则,所以下面来介绍一种很方便的用法:

新建抽象类

<?phpnamespace AppHttpValidators;use Validator;abstract class AbstractValidator{

/**

 * Validator

 *

 * @var IlluminateValidationFactory

 */

protected $validator;

/**

 * Validation data key => value array

 *

 * @var array

 */

protected $data = array();

/**

 * Validation errors

 *

 * @var array

 */

protected $errors = array();

/**

 * Validation rules

 *

 * @var array

 */

protected $rules = array();

/**

 * Validation messages

 *

 * @var array

 */

protected $messages = array();

/**

 * Validation codes

 *

 * @var array

 */

protected $codes = array();

public function __construct(array $data)

{



$this->data = $data;



$this->before();



$this->validator = Validator::make($this->data, $this->rules, $this->messages);



$this->after();

}

/**

 * Set data to validate

 *

 * @return validator

 */

public function getValidator()

{



return $this->validator;

}

/**

 * Set data to validate

 *

 * @return $this

 */

public function with(array $data)

{



$this->data = $data;



$this->before();



$this->validator = $this->validator->make($this->data, $this->rules, $this->messages);



$this->after();



return $this;

}

/**

 * Validation passes or fails

 *

 * @return boolean

 */

public function passes()

{



if ($this->validator->fails()) {





$this->errors = $this->validator->messages();





return false;



}



return true;

}

/**

 * Return errors, if any

 *

 * @return array

 */

public function errors()

{



return $this->errors;

}

/**

 * Return errors codes, if any

 *

 * @return array

 */

public function getCodes()

{



return $this->codes;

}

/**

 * getRules

 *

 * @return array

 */

public function getRules()

{



return $this->rules;

}

/**

 * getData

 *

 * @return array

 */

public function getData()

{



return $this->data;

}

/**

 * getErrors

 *

 * @return array

 */

public function getErrors()

{



return $this->errors;

}

/**

 * getMessages

 *

 * @return array

 */

public function getMessages()

{



return $this->messages;

}

/**

 * setRule

 *

 * @param string $key

 * @param string $value

 *

 * @return $this

 */

public function setRule($key, $value)

{



$this->rules[$key] = $value;



return $this;

}

/**

 * emptyRules

 *

 * @return $this

 */

public function emptyRules()

{



$this->rules = array();



return $this;

}

/**

 * sometimes

 *

 * @param
string


 $attribute

 * @param
string|array $rules

 * @param
callable

 $callback

 *

 * @return $this

 */

public function sometimes($attribute, $rules, callable $callback)

{



$this->validator->sometimes($attribute, $rules, $callback);



return $this;

}

/**

 * resolver

 *

 * @param
Closure $resolver

 *

 * @return $this

 */

public function resolver(Closure $resolver)

{



Validator::resolver($resolver);



return $this;

}

/**

 * replacer

 *

 * @param
Closure $resolver

 *

 * @return $this

 */

public function replacer($replace, Closure $resolver)

{



Validator::replacer($replace, $resolver);



return $this;

}

/**

 * extendImplicit

 *

 * @param
Closure $resolver

 *

 * @return $this

 */

public function extendImplicit($extendImplicit, Closure $resolver)

{



Validator::extendImplicit($extendImplicit, $resolver);



return $this;

}

/**

 * extend

 *

 * @param
string




$rule

 * @param
Closure|string $extension

 * @param
string




$message

 *

 * @return $this

 */

public function extend($rule, $extension, $message = null)

{



Validator::extend($rule, $extension, $message);



return $this;

}

/**

 * before (extend(),resolver())

 *

 * @return $this

 */

public function before()

{

}

/**

 * after(sometimes())

 *

 * @return $this

 */

public function after()

{

}}

新建中间件

<?phpnamespace AppHttpMiddleware;use Closure;use IlluminateHttpRequest;class ValidateAdminMiddleware{

/**

 * This namespace is applied to the controller routes in your routes file.

 *

 * In addition, it is set as the URL generator's root namespace.

 *

 * @var string

 */

protected $namespace = 'AppHttpValidators';

/**

 * Handle an incoming request.

 *

 * @param
IlluminateHttpRequest $request

 * @param
Closure







 $next

 *

 * @return mixed

 */

public function handle(Request $request, Closure $next, $validator = null)

{



if ($request->isMethod('POST')) {





$type = $request->segment(1);





if ($validator) {







$validator = $this->namespace . '\' . studly_case($type) . '\' . studly_case($validator) . 'Validator';







$validator = new $validator($request->all());







if (!$validator->passes()) {









if ($request->isAjax()) {











return $validator->errors()->first();









} else {











return redirect()->back()











->withErrors($validator->getValidator())











->withInput();









}







}





}



}



return $next($request);

}}

新建 TestTestValidator

<?phpnamespace AppHttpValidatorsAdmin;use AppHttpValidatorsAbstractValidator;class TestValidator extends AbstractValidator{

/**

 * Validation rules

 *

 * @var Array

 */

protected $rules = array(



'name' => ['required', 'test', 'min:1'],

);

/**

 * Validation messages

 *

 * @var Array

 */

protected $messages = array(



'name.required' => '必填',



'name.min' => '最少1个字符',



'name.test' => '测试',

);

/**

 * 自定义验证规则或者扩展Validator类

 */

public function before()

{



$this->extend('test', function ($attribute, $value, $parameters) {





return bool;



});

}}

路由中如何使用

Route::post('/', ['middleware' => ['valiAdmin:Test'], 'uses' => 'IndexController@test']);

具体使用可以自行配置~

以上就是laravel中validator的使用方法介绍(代码示例)的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的laravel中validator的使用方法介绍(代码示例)全部内容,希望文章能够帮你解决laravel中validator的使用方法介绍(代码示例)所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com