mcpField
F
filament-resource

filament-resource

github.com/mwguerra開発361.2k 回インストール26 週間前に更新
リポジトリ

filament-resource について

FilamentPHP Resource Generation Skillは、FilamentPHP v4のリソース生成を開発者向けに案内し、フォーム、テーブル、リレーションマネージャー、ページを扱います。指定ドキュメントに沿う手順には、認可設定と機能テストの出力も含まれます。

主な機能

  1. 01FilamentPHP v4リソースの生成
  2. 02フォームとテーブルの設定
  3. 03リレーションマネージャーとページの作成
  4. 04認可ポリシーの追加
  5. 05機能テストファイルの生成

活用シーン

  1. 01モデル用の管理リソースのひな形作成
  2. 02リソース内の関連レコード設定
  3. 03認可とリソーステストの追加

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mwguerra/claude-code-plugins --skill filament-resource

インストール後、Claude Code で/filament-resourceを入力して読み込まれたか確認します。

詳細

FilamentPHP リソース生成スキル

概要

このスキルでは、フォームスキーマ、テーブル設定、リレーションマネージャー、カスタムページを含む、完全な FilamentPHP v4 リソースを生成します。生成されるすべてのコードは、公式ドキュメントのパターンに準拠します。

ドキュメント参照

重要: リソースを生成する前に、次のドキュメントを読んでください。

  • /home/mwguerra/projects/mwguerra/claude-code-plugins/filament-specialist/skills/filament-docs/references/general/03-resources/
  • /home/mwguerra/projects/mwguerra/claude-code-plugins/filament-specialist/skills/filament-docs/references/forms/
  • /home/mwguerra/projects/mwguerra/claude-code-plugins/filament-specialist/skills/filament-docs/references/tables/

ワークフロー

Step 1: 要件を収集する

次の項目を確認します。

  • モデル名と名前空間
  • フォームに含めるフィールド
  • テーブルに表示するカラム
  • 管理するリレーションシップ
  • 必要なカスタムアクション
  • 認可要件
Step 2: ベースリソースを生成する

Laravel Artisan を使ってリソースを作成します。

# Basic resource
php artisan make:filament-resource ModelName

# With generate flag (creates form/table from model)
php artisan make:filament-resource ModelName --generate

# Soft deletes support
php artisan make:filament-resource ModelName --soft-deletes

# View page only
php artisan make:filament-resource ModelName --view

# Simple resource (modal forms instead of pages)
php artisan make:filament-resource ModelName --simple
Step 3: フォームスキーマをカスタマイズする

フォームフィールドのドキュメントを読み、実装します。

use Filament\Forms;
use Filament\Forms\Form;

public static function form(Form $form): Form
{
    return $form
        ->schema([
            Forms\Components\Section::make('Basic Information')
                ->schema([
                    Forms\Components\TextInput::make('name')
                        ->required()
                        ->maxLength(255),
                    Forms\Components\Textarea::make('description')
                        ->rows(3)
                        ->columnSpanFull(),
                ]),
            Forms\Components\Section::make('Settings')
                ->schema([
                    Forms\Components\Toggle::make('is_active')
                        ->default(true),
                    Forms\Components\Select::make('status')
                        ->options([
                            'draft' => 'Draft',
                            'published' => 'Published',
                        ]),
                ]),
        ]);
}
Step 4: テーブルをカスタマイズする

テーブルのドキュメントを読み、実装します。

use Filament\Tables;
use Filament\Tables\Table;

public static function table(Table $table): Table
{
    return $table
        ->columns([
            Tables\Columns\TextColumn::make('name')
                ->searchable()
                ->sortable(),
            Tables\Columns\IconColumn::make('is_active')
                ->boolean(),
            Tables\Columns\BadgeColumn::make('status')
                ->colors([
                    'warning' => 'draft',
                    'success' => 'published',
                ]),
            Tables\Columns\TextColumn::make('created_at')
                ->dateTime()
                ->sortable()
                ->toggleable(isToggledHiddenByDefault: true),
        ])
        ->filters([
            Tables\Filters\SelectFilter::make('status')
                ->options([
                    'draft' => 'Draft',
                    'published' => 'Published',
                ]),
            Tables\Filters\TernaryFilter::make('is_active'),
        ])
        ->actions([
            Tables\Actions\ViewAction::make(),
            Tables\Actions\EditAction::make(),
            Tables\Actions\DeleteAction::make(),
        ])
        ->bulkActions([
            Tables\Actions\BulkActionGroup::make([
                Tables\Actions\DeleteBulkAction::make(),
            ]),
        ]);
}
Step 5: リレーションマネージャーを追加する

リレーションシップがある場合は、リレーションマネージャーを作成します。

php artisan make:filament-relation-manager ResourceName RelationName column_name

リソースに登録します。

public static function getRelations(): array
{
    return [
        RelationManagers\CommentsRelationManager::class,
        RelationManagers\TagsRelationManager::class,
    ];
}
Step 6: ページを設定する

リソースページを定義します。

public static function getPages(): array
{
    return [
        'index' => Pages\ListModels::route('/'),
        'create' => Pages\CreateModel::route('/create'),
        'view' => Pages\ViewModel::route('/{record}'),
        'edit' => Pages\EditModel::route('/{record}/edit'),
    ];
}
Step 7: 認可を追加する

ポリシーメソッドを実装します。

public static function canViewAny(): bool
{
    return auth()->user()->can('view_any_model');
}

public static function canCreate(): bool
{
    return auth()->user()->can('create_model');
}

フォームフィールドのリファレンス

テキストフィールド
  • TextInput::make() - 1行のテキスト
  • Textarea::make() - 複数行のテキスト
  • RichEditor::make() - WYSIWYG エディター
  • MarkdownEditor::make() - Markdown エディター
選択フィールド
  • Select::make() - ドロップダウン選択
  • Radio::make() - ラジオボタン
  • Checkbox::make() - 単一チェックボックス
  • CheckboxList::make() - 複数チェックボックス
  • Toggle::make() - トグルスイッチ
日付/時刻フィールド
  • DatePicker::make() - 日付のみ
  • DateTimePicker::make() - 日付と時刻
  • TimePicker::make() - 時刻のみ
ファイルフィールド
  • FileUpload::make() - ファイルアップロード
  • SpatieMediaLibraryFileUpload::make() - メディアライブラリ
リレーションシップフィールド
  • Select::make()->relationship() - BelongsTo の選択
  • CheckboxList::make()->relationship() - BelongsToMany
  • Repeater::make()->relationship() - HasMany のインライン表示
レイアウトコンポーネント
  • Section::make() - カードセクション
  • Fieldset::make() - フィールドセットのグループ化
  • Tabs::make() - タブ付きセクション
  • Grid::make() - グリッドレイアウト
  • Split::make() - 分割レイアウト

テーブルカラムのリファレンス

テキストカラム
  • TextColumn::make() - 基本的なテキスト
  • IconColumn::make() - Boolean アイコン
  • ImageColumn::make() - 画像サムネイル
  • BadgeColumn::make() - バッジ形式
  • ColorColumn::make() - カラースウォッチ
カラム修飾子
  • ->searchable() - 検索を有効化
  • ->sortable() - 並べ替えを有効化
  • ->toggleable() - 表示/非表示を切り替え可能
  • ->wrap() - テキストを折り返す
  • ->limit() - テキストを省略する

出力

リソースごとに、次のファイルを生成します。

  1. リソースクラス - app/Filament/Resources/ModelResource.php
  2. ページ - app/Filament/Resources/ModelResource/Pages/
  3. リレーションマネージャー - app/Filament/Resources/ModelResource/RelationManagers/
  4. テストファイル - tests/Feature/Filament/ModelResourceTest.php

コメント