resource について
resourceは、FilamentPHP v4開発者向けにリソースを生成するスキルです。フォーム、テーブル、リレーションマネージャー、ページを公式ドキュメントのパターンに沿って作成し、認可設定とテストファイルも含めます。
主な機能
- 01FilamentPHP v4リソースの生成
- 02フォーム項目とレイアウトの設定
- 03テーブル列とオプションの設定
- 04リレーションマネージャーとページの作成
- 05認可ロジックとテストファイルの追加
活用シーン
- 01Laravelモデル用の管理リソース作成
- 02リソースで関連データを管理
- 03認可付きFilament画面の生成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mwguerra/ claude-code-plugins --skill resourceインストール後、Claude Code で/resourceを入力して読み込まれたか確認します。
詳細
FilamentPHP リソース生成スキル
概要
このスキルは、フォームスキーマ、テーブル設定、リレーションマネージャー、カスタムページを含む FilamentPHP v4 の完全なリソースを生成します。生成されるコードはすべて、公式ドキュメントのパターンに従います。
ドキュメントの参照
重要: リソースを生成する前に、以下を読んでください。
/home/mwguerra/projects/mwguerra/claude-code-plugins/filament-specialist/skills/docs/references/general/03-resources//home/mwguerra/projects/mwguerra/claude-code-plugins/filament-specialist/skills/docs/references/forms//home/mwguerra/projects/mwguerra/claude-code-plugins/filament-specialist/skills/docs/references/tables/
ワークフロー
ステップ 1:要件を収集する
以下を特定します。
- モデル名と名前空間
- フォームに含めるフィールド
- テーブルに表示する列
- 管理するリレーションシップ
- 必要なカスタムアクション
- 認可要件
ステップ 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
ステップ 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',
]),
]),
]);
}
ステップ 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(),
]),
]);
}
ステップ 5:リレーションマネージャーを追加する
リレーションシップ用に、リレーションマネージャーを作成します。
php artisan make:filament-relation-manager ResourceName RelationName column_name
リソースに登録します。
public static function getRelations(): array
{
return [
RelationManagers\CommentsRelationManager::class,
RelationManagers\TagsRelationManager::class,
];
}
ステップ 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'),
];
}
ステップ 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()- BelongsToManyRepeater::make()->relationship()- HasMany のインライン表示
レイアウトコンポーネント
Section::make()- カードセクションFieldset::make()- フィールドセットのグループ化Tabs::make()- タブ付きセクションGrid::make()- グリッドレイアウトSplit::make()- 分割レイアウト
テーブル列のリファレンス
テキスト列
TextColumn::make()- 基本的なテキストIconColumn::make()- ブール値アイコンImageColumn::make()- 画像サムネイルBadgeColumn::make()- バッジのスタイルColorColumn::make()- 色見本
列の修飾子
->searchable()- 検索を有効化->sortable()- 並べ替えを有効化->toggleable()- 表示/非表示を切り替え可能->wrap()- テキストを折り返す->limit()- テキストを省略する
出力
各リソースについて、以下を生成します。
- リソースクラス -
app/Filament/Resources/ModelResource.php - ページ -
app/Filament/Resources/ModelResource/Pages/ - リレーションマネージャー -
app/Filament/Resources/ModelResource/RelationManagers/ - テストファイル -
tests/Feature/Filament/ModelResourceTest.php
コメント
Markdown 対応