使用VeeValidate

bootstrap vue 的表单验证推荐使用VeeValidate

安装!

效果不错

app.js中添加require('./veevalidate');

使用独立文件引入

veevalidate.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import Vue from 'vue';
import { ValidationObserver, ValidationProvider, extend , localize } from 'vee-validate';
import en from "vee-validate/dist/locale/en.json";
import * as rules from "vee-validate/dist/rules";
import VueI18n from 'vue-i18n'


Object.keys(rules).forEach(rule => {
extend(rule, rules[rule]);
});

localize("en", en);

Vue.component("ValidationObserver", ValidationObserver);
Vue.component('ValidationProvider', ValidationProvider);

使用方法查看官方例子

注意passeshandleSubmit 是相同的 v-slot, 文档中没有写明。

随手

订的3M 7093C到了。之后也是可以用的没事儿。

喜欢ff14挖宝,数据多了,老方式有点抗不住了。

是时候写个UI了。数据库还想好用什么也是一个问题。

前端vue , 后端express ,数据库SQLite3也许是个不错的选择。

通过Nginx反向代理。

为什么不使用laravel?

你要打一个蚊子会用榴弹炮吗?也许有人会吧。

枫叶国

在枫叶国的孩子们应该准备防护用品食物了,最少3个月的份哦~

更新到 php 7.4

切换到对应的php版本

1
2
3
brew-php-switcher 7.4
sudo brew services stop [email protected]
sudo brew services start php

安装redis扩展

1
pecl install redis

确认redis包安装完成

1
php -m

确认设置文件位置

1
php --ini

添加

1
extension="redis.so"

重启php

1
sudo brew services restart php

无言

没什么要说的了

可能持续到6月

担心粮食储备

无言

不知道说什么

想说的书上都写了

分包顺利进行中

更多的是无力感

新年快乐

并快乐不起来

如果没估计错的话

之后也不会快乐的

纵观千年,一成不变

在 vue 独立组件中使用 laravel echo

引入包

1
2
3
import Echo from "laravel-echo"

window.io = require('socket.io-client');

设置新的Echo,同时监听新的echo

1
2
3
4
5
6
7
8
9
this.echo = new Echo({
broadcaster: 'socket.io',
host: this.url.host,
key: this.url.key,
})
this.echo.channel(this.url.channel)
.listen(this.url.listen, (res) => {
this.pushData(res)
})

以上

laravel 包中创建新 view 并使用 vue-route

前言

自行开发的laravel扩展包少不了UI的显示。

官方又没有写明,于是就踩了不少的坑。

填坑方法如下。

js 设置文件

package.json

复制laravel最初的设置就好

webpack.mix.js

注意copy到对应的laravel项目路径

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const mix = require('laravel-mix');
const webpack = require('webpack');


mix.setPublicPath('public')
.js('resources/js/app.js', 'public')
.sass('resources/sass/app.scss', 'public')
.copy('public', '../../../web/public/vendor/logsservice')
.webpackConfig({
resolve: {
symlinks: false,
alias: {
'@': path.resolve(__dirname, 'resources/js/'),
},
},
plugins: [new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)],
});

resources 文件夹

app.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import Vue from 'vue';
import axios from 'axios';
import Routes from './routes';
import VueRouter from 'vue-router';
import { BootstrapVue, IconsPlugin } from 'bootstrap-vue';
import moment from 'moment-timezone';

require('./socket');

let token = document.head.querySelector('meta[name="csrf-token"]');

if (token) {
axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
}

Vue.use(VueRouter);
Vue.use(BootstrapVue);
Vue.use(IconsPlugin);

moment.tz.setDefault(LogsService.timezone);

window.LogsService.basePath = '/' + window.LogsService.path;

let routerBasePath = window.LogsService.basePath + '/';

if (window.LogsService.path === '' || window.LogsService.path === '/') {
routerBasePath = '/';
window.LogsService.basePath = '';
}

const router = new VueRouter({
routes: Routes,
mode: 'history',
base: routerBasePath,
});

new Vue({
router,
el: '#logs',
})

routes.js

1
2
3
4
5
6
7
8
export default [
{ path: '/' , redirect: '/home' },
{
path: '/home' ,
name: 'home',
component: require('./screens/home/index').default,
},
];

其他vue组件

正常写法,没什么需要注意的

laravel

路由

有使用vue-router,不按照下面的写会404哦。

1
Route::get('/{view?}' , 'LogServiceController@getHome')->where('view', '(.*)' )->name('home');

控制器

传递logsServicePath到页面。

1
return view('logsservice::layout' , [ 'logsServicePath' => [ 'path' => 'logs' ] ]);

blade

注意$logsServicePath有控制器传递了。注意根据需要修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">

<title>logs {{ config('app.name') ? ' - ' . config('app.name') : '' }}</title>

<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
<link href="{{ asset( 'vendor/logsservice/app.css') }}" rel="stylesheet" type="text/css">

</head>
<body>
<div id="logs">
<router-view></router-view>
</div>
</body>
<script>
window.LogsService = @json($logsServicePath);
</script>
<script src="{{ asset( 'vendor/logsservice/app.js') }}"></script>
</html>

以上

前言

移动网络天生带墙

v2ray 使用不能

尝试trojan,不能使用 cloudflare ,不能使用nginx反正代理

放弃。

Clashx

macv2rayX经常崩溃。换到ClashX

设置全部在config.yml中不复杂

Clash用在windows

ClashX用在mac

设置方向相同

文档使用Clash

为laravel logs添加自定义格式与处理方法

Monolog\Formatter\LineFormatter 用来定义log内容。

Monolog\Processor\IntrospectionProcessor 用来获取控制器、方法、行数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php

namespace App\Logging;

use Monolog\Logger;
use Monolog\Formatter\LineFormatter;
use Monolog\Processor\IntrospectionProcessor;

// 接收log
class TestLogging
{
private $logFormat = "";
private $dateFormat = 'Y/m/d H:i:s';

public function __construct()
{
// 设置行内容
$cols = [
"%datetime%",
"[%channel%.%level_name%]",
"%extra.class%@%extra.function%(%extra.line%)",
"%message%",
"%context%",
];

// 成表格
$this->logFormat = implode("\t", $cols) . PHP_EOL;
}

public function __invoke($monolog)
{
// 定义新的日记样式
$formatter = new LineFormatter($this->logFormat, $this->dateFormat, true, true);

// 控制器 内容追加
$ip = new IntrospectionProcessor(Logger::DEBUG, [] , 4);

foreach ($monolog->getHandlers() as $handler) {
$handler->setFormatter($formatter);
$handler->pushProcessor($ip);
}
}
}

设置logging.php

1
2
3
4
5
6
7
'daily' => [
'driver' => 'daily',
'tap' => [App\Logging\TestLogging::class],
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
'days' => 14,
],

参考1
参考2

2020 新年快乐

希望今年大多数关心事情都有一个好的结果!

健身环

健身环还是有用的,真的会瘦哦~

划分功能

对功能进行划分。

服务器端监听socket有点浪费资源就先不想了。

多服务器控制划分让人一吵都一点烦。

0%