当代框架基本都是有组件构成,这使得框架变得更加灵活。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);
}
总结
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。