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

2021-07-14 14:27:15 浏览数 (1)

当代框架基本都是有组件构成,这使得框架变得更加灵活/

/。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 appcommon;

use Illum/

/inateFilesystemFilesystem;

use IlluminateTranslationFileLoader;

use IlluminateTranslationTranslator;

use IlluminateValidationFactory;

class Validato

{

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;

}

}

在全局函数文件添加:

//

// $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 appcommonValidator::getInstance()->make($data, $rules, $messages, $customAttributes);

}

测试使用:

$rules = ['name' => 'required|numeric'];

$customAttributes = ['name' => 'My name'];

$messages = ['name.required' => 'A name is required',];

$validator = validator($data, $rules, $customAttributes, $messages);

if ($validator->fails()) {

$errors = $validator->errors()->all();

Response::error(Errors::ParamsInvalid, implode(',', $errors), $errors);

}

0 人点赞