手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

优化 Filament 的 flatpickr 插件

Filament 自带的日期组件在实际使用的时候功能还是相对比较少,因此在看到有 flatpickr 插件提供后,就想着替换了他。替换后发现功能确实达到我想要的,但带来的另一个问题是,纯英文的,语言包无法使用。即使显式的传入'local'=>'zh'也没用。

 
为此翻看源码,结果发现,作者在 2 年前就不维护了,直接更新 PHP 和 blade 模板发现都无效。检查他整体代码后,发现只能通过重新编译他的 filament-component 来解决
 
于是做了以下几步
1、将项目拷贝到 /plugins/下
2、在 composer.json 里指定路径 
3、将 "coolsam/flatpickr": 的版本,改成"@dev",
4、重新 composer u
5、进入 flatpickr 的项目,pnpm i,安装 Esbuild,修改 resources/js/components/flatpickr.js,在顶部 import flatpickrLocales from 'flatpickr/dist/l10n';
然后,在 this.fp = xxx 的上一行加入:flatpickr.localize(flatpickrLocales)
这是因为 flatpickr 对就在的是 FlatPickrFn,具体的几个方法可以点击 import flatpickr from "flatpickr"; 进行查看
6、重新 node bin/build.js 
虽然这时候生成了,但并不会更新到 public 里,还需要手工执行 php artisan filament:assets 
至此,更新成功
 
然后在调用的组件里引入:customConfig(['locale'=>'zh'])即可。测试了一下 zh_tw 也没问题
PHP代码
  1. Flatpickr::make('created_at')->label(创建日期') 
  2.     ->customConfig([ 
  3.          'locale' => 'zh',  
  4.     ])->monthSelect(),  
So easy。
 
 
---EOF---
因为比较懒,所以没有 PR 到原库,同时也没有自己根据原库弄个新库
 
 
 

Tags: filament, flatpickr

2024年,phpstorm 终于支持 log 高亮了

 2024年了。phpstorm 终于支持 LOG 高亮了。

现在用 phpstorm 打开项目里的 log 文件,行号什么的时候 以及代码可以高亮显示,如果在内置终端的命令行用 tail -f 来看日志。你可以看到错误文件和行号可以点击了。点击后会跳到错误对应的行号。。
 
10多年了,终于有这样的功能了。这真是不可思议。在 PHP 即将或者说已经走向没落的时候 ,居然才出类似的功能。
而且这次支持的还挺多:
 

Log files support

Laravel, Symfony, and WordPress log files can now be viewed directly in the IDE with proper highlighting of dates, times, events (by severity level), and hyperlinks.

 
详细的可以查看:https://www.jetbrains.com/phpstorm/whatsnew/
还有专门亚洲语言支持:

Japanese, Korean, and Chinese UI options

Chinese, Japanese, and Korean UI language packs are now included in the base IDE installation.

 
 
 
 
 

有一说一。composer的源,还是阿里最稳定

如题。

本来一直是在用腾讯的,发现腾讯的更新有问题。即使是一个老的库,偶尔还有404的情况。切到aliyun后。一切正常了。
找到个页面,上面有写。腾讯是24小时更新。阿里是96秒(??96秒是什么概念。。。。。)
 
参考:https://cloud.tencent.com/developer/article/1606838,虽然也是普通用户发的文章,就这么一看,图一乐吧
 

laravel的 macroable

 其实有点不想写这个的,但想想还是提一嘴吧,主要是用了这玩意之后,在 phpstorm 下面,不配合 laravel idea 的话,根本起不到太大的作用。安装了 laravel idea 之后。再 generate helper code 后。就可以当成正常的方法用了(当然,即使这么用了,带来的另一个问题就是。。refactor 的时候,不会受影响,毕竟这其实就是数组的一个 key)

 
macroable 的适用场景,官方介绍的更多是象 str / arr /collection 的扩展。而且 macroable 有点象是 trait。给现有类注入一个方法(这点在 yii中其实早就有了。不过macroable 也属于很早的框架,只是叫法不一样罢了。 )
 
macroable 的 mixin 方法,估计很多人很熟悉,是的,vue2的时候 ,也是这样来注入新的方法的。
 
除此之外,我们可能有时候 还会在 Model / Cache 里加入自己的用法。比如标准的 Model,肯定没有 pinyin 这样的方法, 比如我要将标题转为拼音当成 slug 来用,有几种办法:
1、直接写个方法 title2pinyin( $title )
2、在 Post 类里增加一个方法 getPinyinAttribute,返回拼音(如果有多个 Model 里有类似的要求,那要么把这个方法写成 trait,要么一个个复制)
3、Post::macro('pinyin',function(){ return .... 拼音 })

类似这几种方法,不能说孰优孰劣,但如果和 model 相关的操作是被项目的人封装成 composer 的类时,也就1和3可以用了。
 
说实话,要想好好用这个方法,并且形成优势。有时候还真不知道或者真没感觉倒,但这毕竟也能算是曲线救国。想想,如果在 cache 里用。可以 cache()->get('name')->toPinyin(),感觉也还不错。
 

用 laravel11 + Filament 来尝试写博客 (一)

 Laravel 官方在推上说即将推出 Laravel11,这次的推出的版本将以极致的精简,而且去掉了很多原来为了结构而分拆的文件。象 Console/Http 下的 Kernel 文件,全部去掉,而且改 bootstrap/app.php 来实现了,在路由里甚至留了一下 health 。用于其他监控项目来检查服务器是否正常。默认是:http://{hostname}/up,我在本地运行下来,执行时间是39ms,所以我就更加想尝试用11来把我当前的博客重写一下(之前写的时候 ,都是考虑直接使用原来的数据库结构,导致写了几次都发现很不 laravel,所以几次就放弃了)

 
Filament,是一个后台管理项目,基于 livewire 的(关于 livewire,可以查看 https://livewire.laravel.com ),号称是不用写 JS 的后台管理。之所以选择这个,是本来几年前用的是 dcat-admin,然而作者也已经好多年没更新了(这就是使用第三方开源项目的尴尬之处,作者也不太可能用爱发电,如果项目没有赢利或者找不到赢利点,这个项目很可能就无疾而终了)。而选择 filament 也是因为看中了他的生态,有完善的插件平台(有免费和付费插件)。一旦有人购买插件,会促使更多的人使用并扩展(搜了一下,其实有不少类似的,象:splade.dev / tomatophp / nova[官方] ),但目前看下来,好象还在持续更新的就是 filament 了。在推上也能看到 filament 挺活跃。所以选择它做为接下来3年的后台管理。
 
今天就先到这里先介绍一下这两个项目,然后准备开始写,遇到踩坑的地方也会记录一下。
项目开始其实很方便
laravel new blog,就可以初始化项目了。因为考虑到其实暂时不需要前台登录,所以没有用 breeze 和 jetstream。
项目初始化后,运行 composer require filament/filament 就可以安装好filament 了
这时候还要运行 php artisan filament:install --panels。安装完面板后,可以通过安装时指定的路由进行访问(默认是 admin,可以在运行的时候 进行设置)【备注:后期要修改的话,可以在 app/Providers/Filament/AdminPanelProvider.php 中进行调整】
但此时还不能登录,因为没有 breeze 和 jetstream ,所以连注册也没有,此时只能通过 php artisan make:filament-user 来新建一个用户。
此时,filament就已经安装完了。项目正式启动。

 

Tags: laravel, filament

Records:64612345678910»