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


Posted in PHP onSeptember 20, 2020

当代框架基本都是有组件构成,这使得框架变得更加灵活。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, $rules, $customAttributes, $messages);
if ($validator->fails()) {
 $errors = $validator->errors()->all();
 Response::error(Errors::ParamsInvalid, implode(',', $errors), $errors);
}

总结

到此这篇关于如何在Laravel之外使用illuminate组件的文章就介绍到这了,更多相关Laravel之外使用illuminate组件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
PHP也可以?成Shell Script
Oct 09 PHP
php 格式化数字的时候注意数字的范围
Apr 13 PHP
php 数据库字段复用的基本原理与示例
Jul 22 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
php文本转图片自动换行的方法
Mar 13 PHP
PHP获取网页标题的3种实现方法代码实例
Apr 11 PHP
php绘制一个矩形的方法
Jan 24 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
Mar 13 PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 PHP
PHP魔术方法的使用示例
Jun 23 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
CI框架附属类用法分析
Dec 26 PHP
PHP编程一定要改掉的5个不良习惯
Sep 18 #PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
Sep 17 #PHP
深入浅析安装PhpStorm并激活的步骤详解
Sep 17 #PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 17 #PHP
PHPstorm启用自动换行的方法详解(IDE)
Sep 17 #PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 17 #PHP
phpstorm激活码2020附使用详细教程
Sep 25 #PHP
You might like
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
PHP写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
php和javascript之间变量的传递实现代码
2012/12/19 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
php实现删除空目录的方法
2015/03/16 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
插件:检测javascript的内存泄漏
2007/03/04 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
JavaScript实现的类字典插入或更新方法实例
2015/07/10 Javascript
JavaScript字符串删除重复字符的方法
2015/12/25 Javascript
JavaScript驾驭网页-CSS与DOM
2016/03/24 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
js get和post请求实现代码解析
2020/02/06 Javascript
Python中如何优雅的合并两个字典(dict)方法示例
2017/08/09 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
解决springboot yml配置 logging.level 报错问题
2020/02/21 Python
阿波罗盒子:Apollo Box
2017/08/14 全球购物
全球知名的珠宝首饰品牌:Kay Jewelers
2018/02/11 全球购物
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
教师自荐书
2013/10/08 职场文书
库房主管岗位职责
2013/12/31 职场文书
清扬洗发水广告词
2014/03/14 职场文书
公司董事长岗位职责
2014/06/08 职场文书
信息员培训方案
2014/06/12 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
欠款纠纷起诉状
2015/05/19 职场文书
单身证明格式样本
2015/06/15 职场文书
小学生读书笔记范文
2015/06/30 职场文书