如何在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的FTP学习(三)
Oct 09 PHP
php利用header函数实现文件下载时直接提示保存
Nov 12 PHP
php 计算两个时间戳相隔的时间的函数(小时)
Dec 18 PHP
PHP常用代码大全(新手入门必备)
Jun 29 PHP
PHP+JS+rsa数据加密传输实现代码
Mar 23 PHP
php5.5新数组函数array_column使用
Jul 08 PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 PHP
PHP使用pear自带的mail类库发邮件的方法
Jul 08 PHP
Symfony查询方法实例小结
Jun 28 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
php+mysql实现的无限分类方法类定义与使用示例
May 27 PHP
PHP的imageTtfText()函数深入详解
Mar 03 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
PHP调用三种数据库的方法(1)
2006/10/09 PHP
探讨:如何编写PHP扩展
2013/06/13 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
JS获取农历日期具体实例
2013/11/14 Javascript
前端性能优化及技巧
2016/05/06 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
webpack开发跨域问题解决办法
2017/08/03 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
2020/04/06 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
Django中间件实现拦截器的方法
2018/06/01 Python
ipython和python区别详解
2019/06/26 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
高中毕业自我鉴定范文
2013/10/02 职场文书
工程项目建议书范文
2014/03/12 职场文书
职称评定自我鉴定
2014/03/18 职场文书
运动会通讯稿200字
2015/07/20 职场文书
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python