ralphjsmit/laravel-filament-seo
Composer 安装命令:
composer require ralphjsmit/laravel-filament-seo
包简介
A package to combine the power of Laravel SEO and Filament Admin.
README 文档
README
Combine the power of Laravel SEO and Filament PHP.
This package is a convenient helper for using the laravel-seo package with Filament Admin and Forms.
It provides a simple component that returns a Filament fieldgroup to modify the title, author and description fields of the SEO model. It automatically takes care of getting and saving all the data to the seo() relationship, and you can thus use it anywhere, without additional configuration!
use Filament\Resources\Form; use RalphJSmit\Filament\SEO\SEO; public static function form(Form $form): Form { return $form->schema([ SEO::make(), // .. Your other fields ]); }
Here's an example of how the SEO component looks like:
Installation
First, install the packages:
composer require ralphjsmit/laravel-filament-seo
This will the require the ralphjsmit/laravel-seo as well if you didn't have that installed. Be sure to check out the documentation of the main package and configure the values in the special seo.php config file!
Next, make sure that the Eloquent Model you're editing uses the HasSEO trait:
class Post extends Model { use HasSEO; }
Now the SEO::make() helper is available to use anywhere you want. Below are several examples how to use it:
In Filament Admin
This is an example of using this package in the classic Filament Admin.
It works for both creating and editing posts:
<?php namespace App\Filament\Resources; use App\Filament\Resources; use App\Models\Post; use Filament\Forms\Components\TextInput; use Filament\Resources\Form; use Filament\Resources\Resource; use Filament\Resources\Table; use RalphJSmit\Filament\SEO\SEO; class PostResource extends Resource { protected static ?string $model = Post::class; protected static ?string $slug = 'posts'; protected static ?string $recordTitleAttribute = 'title'; protected static ?string $navigationGroup = 'Blog'; protected static ?string $navigationIcon = 'heroicon-o-document-text'; protected static ?int $navigationSort = 0; public static function form(Form $form): Form { return $form->schema([ TextInput::make('title'), SEO::make(), ]); } public static function table(Table $table): Table { return $table->columns([ /* */ ]); } public static function getPages(): array { return [ 'index' => Resources\PostResource\Pages\ListPosts::route('/'), 'create' => Resources\PostResource\Pages\CreatePost::route('/create'), 'edit' => Resources\PostResource\Pages\EditPost::route('{record}/edit'), ]; } }
With Filament Forms
You can also use this package with the stand-alone Filament Forms package.
This is a simple example of how to setup a Livewire component that creates a new post. In this example, I wrapped the SEO component in a Card.
<?php namespace App\Http\Livewire; use App\Models\Post; use Filament\Forms\Components\Card; use Filament\Forms\Components\TextInput; use Filament\Forms\Concerns\InteractsWithForms; use Filament\Forms\Contracts\HasForms; use Illuminate\Contracts\View\View; use Illuminate\Database\Eloquent\Model; use Livewire\Component; use RalphJSmit\Filament\SEO\SEO; class CreatePost extends Component implements HasForms { use InteractsWithForms; public array $data = []; public function mount(): void { $this->form->fill(); } public function render(): View { return view('livewire.create-post'); } protected function getFormSchema(): array { return [ TextInput::make('title'), Card::make([ SEO::make() ]), ]; } protected function getFormStatePath(): ?string { return 'data'; } protected function getFormModel(): Model|string|null { return Post::class; } public function submitForm() { $post = Post::create($this->form->getState()); /** Do not forget this step. */ $this->form->model($post)->saveRelationships(); } }
And here's an example of how a Livewire component for editing a post might like like:
<?php namespace App\Http\Livewire; use App\Models\Post; use Filament\Forms\Components\TextInput; use Filament\Forms\Concerns\InteractsWithForms; use Filament\Forms\Contracts\HasForms; use Illuminate\Contracts\View\View; use Illuminate\Database\Eloquent\Model; use Livewire\Component; use RalphJSmit\Filament\SEO\SEO; use RalphJSmit\Filament\SEO\Tests\Fixtures\Models\Post; class EditPost extends Component implements HasForms { use InteractsWithForms; public Post $post; public function mount(): void { $this->form->fill([ 'title' => $this->post->title, ]); } public function render(): View { return view('livewire.edit-post'); } protected function getFormSchema(): array { return [ TextInput::make('title'), SEO::make(), ]; } protected function getFormModel(): Model|string|null { return $this->post; } public function submitForm() { $this->post->update( $this->form->getState(), ); } }
General
🐞 If you spot a bug, please submit a detailed issue and I'll try to fix it as soon as possible.
🔐 If you discover a vulnerability, please review our security policy.
🙌 If you want to contribute, please submit a pull request. All PRs will be fully credited. If you're unsure whether I'd accept your idea, feel free to contact me!
🙋♂️ Ralph J. Smit
ralphjsmit/laravel-filament-seo 适用场景与选型建议
ralphjsmit/laravel-filament-seo 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 139.24k 次下载、GitHub Stars 达 153, 最近一次更新时间为 2022 年 02 月 17 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「laravel」 「ralphjsmit」 「laravel-filament-seo」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 ralphjsmit/laravel-filament-seo 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ralphjsmit/laravel-filament-seo 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 ralphjsmit/laravel-filament-seo 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A package containing handy helpers for your Laravel-application.
A package to handle the SEO in any Laravel application, big or small.
Get the previous and current url in Livewire.
A collection of reusable components for Filament.
Create forms, modals and slide-overs with ease.
Auto-magically generate responsive images from static image files.
统计信息
- 总下载量: 139.24k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 154
- 点击次数: 20
- 依赖项目数: 11
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-02-17

