当前位置:首页 > CMS教程 > 其它CMS > 列表

如何在Laravel之外使用illuminate组件详解

发布:smiling 来源: PHP粉丝网  添加日期:2022-03-27 10:00:22 浏览: 评论:0 

当代框架基本都是有组件构成,这使得框架变得更加灵活。The Laravel Components | github Laravel 中有不少优质组件,那如何在 Laravel 之外使用 illuminate 组件呢?

illuminate/validation

以 illuminate/validation 为例,validation 有丰富的数据验证功能。

在项目的 composer.json 文件中添加:

  1. ... 
  2.  "require": { 
  3.   ... 
  4.   "illuminate/validation""^5.8"
  5. ... 

从 Laravel-Lang/lang 项目中复制需要的语言文件放到自己的项目中。

例如:在 Yii2 项目中,复制对应语言文件到项目中的 assets/lang/zh-CN/validation.php。

创建 common/Validator.php:

  1. namespace app\common; 
  2.  
  3. use Illuminate\Filesystem\Filesystem; 
  4. use Illuminate\Translation\FileLoader; 
  5. use Illuminate\Translation\Translator; 
  6. use Illuminate\Validation\Factory; 
  7.  
  8. class Validator 
  9.  private static $instance = null; 
  10.  
  11.  private function __construct() 
  12.  { 
  13.  } 
  14.  
  15.  public static function getInstance(): Factory 
  16.  { 
  17.  if (null === static::$instance) { 
  18.   $translationPath = get_alias('@assets/lang'); 
  19.   $translationLocale = 'zh-CN'
  20.   $transFileLoader = new FileLoader(new Filesystem(), $translationPath); 
  21.   $translator = new Translator($transFileLoader$translationLocale); 
  22.   static::$instance = new Factory($translator); 
  23.  } 
  24.  
  25.  return static::$instance
  26.  } 

在全局函数文件添加:

  1. // https://learnku.com/docs/laravel/5.8/validation/3899#manually-creating-validators 
  2. // $rules = [ 
  3. // 'name' => 'required|string|min:2|max:5', 
  4. // 'code' => 'required|string|min:2|max:5', 
  5. // ]; 
  6. function validator(array $dataarray $rulesarray $messages = [], array $customAttributes = []) 
  7.  return \app\common\Validator::getInstance()->make($data$rules$messages$customAttributes); 

测试使用:

  1. $rules = ['name' => 'required|numeric']; 
  2. $customAttributes = ['name' => 'My name']; 
  3. $messages = ['name.required' => 'A name is required',]; 
  4.  
  5. $validator = validator($data$rules$customAttributes$messages); 
  6. if ($validator->fails()) { 
  7.  $errors = $validator->errors()->all(); 
  8.  Response::error(Errors::ParamsInvalid, implode(','$errors), $errors); 
  9. }

Tags: Laravel组件 illuminate

分享到: