当前位置:首页 > 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. { 
  10.  private static $instance = null; 
  11.  
  12.  private function __construct() 
  13.  { 
  14.  } 
  15.  
  16.  public static function getInstance(): Factory 
  17.  { 
  18.  if (null === static::$instance) { 
  19.   $translationPath = get_alias('@assets/lang'); 
  20.   $translationLocale = 'zh-CN'; 
  21.   $transFileLoader = new FileLoader(new Filesystem(), $translationPath); 
  22.   $translator = new Translator($transFileLoader, $translationLocale); 
  23.   static::$instance = new Factory($translator); 
  24.  } 
  25.  
  26.  return static::$instance; 
  27.  } 
  28. } 

在全局函数文件添加:

  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 $data, array $rules, array $messages = [], array $customAttributes = []) 
  7. { 
  8.  return \app\common\Validator::getInstance()->make($data, $rules, $messages, $customAttributes); 
  9. } 

测试使用:

  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

分享到: