1. 程式人生 > 程式設計 >如何在Laravel之外使用illuminate元件詳解

如何在Laravel之外使用illuminate元件詳解

當代框架基本都是有元件構成,這使得框架變得更加靈活。The Laravel Components | github Laravel 中有不少優質元件,那如何在 Laravel 之外使用 illuminate 元件呢?

illuminate/validation

以 illuminate/validation 為例,validation 有豐富的資料驗證功能。

在專案的 composer.json 檔案中新增:

...
 "require": {
  ...
  "illuminate/validation": "^5.8",...


從 Laravel-Lang/lang 專案中複製需要的語言檔案放到自己的專案中。

例如:在 Yii2 專案中,複製對應語言檔案到專案中的 assets/lang/zh-CN/validation.php。

建立 common/Validator.php:

namespace app\common;

use Illuminate\Filesystem\Filesystem;
use Illuminate\Translation\FileLoader;
use Illuminate\Translation\Translator;
use Illuminate\Validation\Factory;

class Validator
{
 private static $instance = null;

 private function __construct()
 {
 }

 public static function getInstance(): Factory
 {
 if (null === static::$instance) {
  $translationPath = get_alias('@assets/lang');
  $translationLocale = 'zh-CN';
  $transFileLoader = new FileLoader(new Filesystem(),$translationPath);
  $translator = new Translator($transFileLoader,$translationLocale);
  static::$instance = new Factory($translator);
 }

 return static::$instance;
 }
}

在全域性函式檔案新增:

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

測試使用:

$rules = ['name' => 'required|numeric'];
$customAttributes = ['name' => 'My name'];
$messages = ['name.required' => 'A name is required',];

$validator = validator($data,$customAttributes,$messages);
if ($validator->fails()) {
 $errors = $validator->errors()->all();
 Response::error(Errors::ParamsInvalid,implode(',',$errors),$errors);
}

總結

到此這篇關於如何在Laravel之外使用illuminate元件的文章就介紹到這了,更多相關Laravel之外使用illuminate元件內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!