如何在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代码
Dec 06 PHP
PHP 字符串分割和比较
Oct 06 PHP
php $_SERVER当前完整url的写法
Nov 12 PHP
PHP禁止个别IP访问网站
Oct 30 PHP
PHP常用技术文之文件操作和目录操作总结
Sep 27 PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
PHP模拟asp中response类实现方法
Aug 08 PHP
Docker 如何布置PHP开发环境
Jun 21 PHP
PHP表单验证内容是否为空的实现代码
Nov 14 PHP
yii2-GridView在开发中常用的功能及技巧总结
Jan 07 PHP
Laravel定时任务的每秒执行代码
Oct 22 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 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
php中{}大括号是什么意思
2013/12/01 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
javascript 面向对象的JavaScript类
2010/05/04 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
Python实现简单状态框架的方法
2015/03/19 Python
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
Python实现控制台输入密码的方法
2015/05/29 Python
Python有序字典简单实现方法示例
2017/09/28 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
python opencv进行图像拼接
2020/03/27 Python
使用python计算三角形的斜边例子
2020/04/15 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
python 检测图片是否有马赛克
2020/12/01 Python
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
建筑经济管理专业求职信分享
2014/01/06 职场文书
大型会议策划方案
2014/05/17 职场文书
新品发布会策划方案
2014/06/08 职场文书
化学工程专业求职信
2014/08/10 职场文书
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python