Files
laralog/app/Providers/AppServiceProvider.php
T
ak c12eb38cca feat: 后台表格优化——行点击禁用/标题省略/行高统一/筛选控件紧凑
- 8 个资源表格 recordUrl(null)+recordAction(null):行不再可点击,查看/编辑仅通过操作列按钮;标题列不再自动变链接
- 标题列单行省略(含分类描述),长标题不换行,所有数据行统一 53px 与表头等高
- 筛选下拉控件紧凑(min-height 1.75rem、字号 0.8rem),与应用按钮协调
- 重置链接紧跟应用筛选按钮(不再推到最右)
- 操作列固定宽度 88px
- 实测:表头=数据行=53px、行点击关闭、重置紧跟应用
2026-08-12 19:11:13 +08:00

102 lines
4.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
declare(strict_types=1);
namespace App\Providers;
use Filament\Facades\Filament;
use Filament\View\PanelsRenderHook;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*/
public function register(): void
{
//
}
private function registerMarketPurchaseListener(): void
{
$manager = app(\App\Blog\Support\PluginManager::class);
if (! $manager->isEnabled('neatstudio.payment')) {
return;
}
$manager->addAction('payment.paid', function (\Plugins\Neatstudio\Payment\Models\Payment $payment) {
$payable = $payment->payable;
if ($payable instanceof \App\Models\MarketPackage) {
$payable->markPaid($payment);
}
}, 10);
}
/**
* Bootstrap any application services.
*/
public function boot(): void
{
// 自动加载所有插件的迁移(插件目录下 database/migrations
foreach (glob(base_path('plugins/*/database/migrations')) ?: [] as $path) {
$this->loadMigrationsFrom($path);
}
// 商城付费:支付成功标记市场商品已购(仅当支付插件启用时注册)
$this->registerMarketPurchaseListener();
// 前台页面缓存(匿名 GET,缓存含 SEO 注入后的最终 HTML)
app('router')->pushMiddlewareToGroup('web', \App\Blog\Support\PageCacheMiddleware::class);
// 后台紧凑化:侧边栏 + 表格行 + 筛选区(Filament 无官方全局紧凑开关,用 CSS 收紧)
Filament::serving(function () {
Filament::registerRenderHook(
PanelsRenderHook::STYLES_AFTER,
fn () => Blade::render(<<<'HTML'
<style>
.fi-sidebar { padding-inline: 0.75rem; }
.fi-sidebar-nav { padding-inline: 0; }
.fi-sidebar-nav-groups { margin-inline: 0; }
.fi-sidebar-nav .fi-sidebar-item-button { padding-inline: 0.6rem; border-radius: 0.5rem; }
.fi-sidebar-nav .fi-sidebar-item-label { font-size: 0.82rem; }
.fi-sidebar-nav .fi-sidebar-group-label { font-size: 0.68rem; letter-spacing: 0.04em; }
.fi-sidebar-brand { padding-block: 0.9rem; }
/* 表格行紧凑:数据行高度由 .fi-ta-text / .fi-ta-icon 的 padding-block 驱动;操作列按钮禁止换行堆叠 */
.fi-ta-text, .fi-ta-icon { padding-block: calc(var(--spacing) * 1.75) !important; }
.fi-ta-actions { flex-wrap: nowrap !important; min-height: 0 !important; }
.fi-ta-header-cell { padding-block: calc(var(--spacing) * 4) !important; }
.fi-ta-selection-cell { padding-block: calc(var(--spacing) * 1.5) !important; }
.fi-ta-header-toolbar { padding-block: 0.5rem !important; }
/* 标题列过长单行省略,避免换行撑高行 */
.fi-ta-cell-title .fi-ta-text { display: block !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }
.fi-ta-cell-title .fi-ta-text .fi-ta-text-item,
.fi-ta-cell-title .fi-ta-text .fi-ta-text-description { display: inline !important; margin: 0 !important; }
/* 操作列固定宽度(钉住右侧需 table sticky,见备注) */
.fi-ta-actions-header-cell, .fi-ta-cell:has(.fi-ta-actions) { width: 88px !important; min-width: 88px !important; }
/* 筛选条件区:整体一行横排,重置紧跟应用按钮,控件紧凑 */
.fi-ta-filters-above-content-ctn { padding: 0.4rem 0.9rem !important; }
.fi-ta-filters-heading { display: none !important; }
.fi-ta-filters { display: flex !important; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.9rem; }
.fi-ta-filters-header { margin: 0 !important; order: 99 !important; }
.fi-ta-filters .fi-grid { display: flex !important; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.9rem; }
.fi-ta-filters .fi-fo-field { display: flex !important; align-items: center; gap: 0.4rem; }
.fi-ta-filters .fi-fo-field-label { margin-bottom: 0 !important; }
.fi-ta-filters .fi-input-wrp { min-height: 1.75rem !important; border-radius: 0.4rem !important; }
.fi-ta-filters .fi-select-input, .fi-ta-filters .fi-select-native { font-size: 0.8rem !important; }
.fi-ta-filters-actions-ctn { display: inline-flex !important; }
.fi-ta-filters-actions-ctn .fi-btn { padding: 0.2rem 0.7rem !important; font-size: 0.8rem !important; }
</style>
HTML)
);
});
}
}