用語まとめ
- CRUD(クラッド)
ソフトウェアの基本、Create(生成)、Read(読み取り)、Update(更新)、Delete(削除)の頭文字を取ったもの。変わることのない基本なので、1から作らずフレームワークで代用することが多い。Laravelもそんなフレームワークの一つ。
https://wa3.i-3-i.info/word123.html - filament(フィラメント)
Laravelの上に構築されたフレームワーク。フレームワークの上のフレームワークということになるが、正確に言うと、Laravelフレームワークに基づく、美しく開発者に優しい管理インターフェイスを提供するためのツールキット。より簡単に見た目の良いCRUDを構築できる。 - MVCモデル
プログラムを役割ごとにModel(モデル)・View(ビュー)・Controller(コントローラー)の3つに分けて管理するソフトウェア設計モデルのこと。Laravelの設計はこのモデルに基づいているため、この概念を元に学ぶと分かりやすい。
https://wa3.i-3-i.info/word11584.html
コマンド/用語まとめ
- artisan
- seeder
MVCについて
Filamentに特化して構造を理解しようとしたときのメモ。chatGPTに質問しながら理解を深めてみた。
artisanコマンドでページを生成する。
php artisan make:filament-page AdminDashboardすると以下のようなファイルが生成される。
- app\Filament\Pages\AdminDashboard.php(コントローラー)
- resources\views\filament\pages\admin-dashboard.blade.php(ビュー)
コントローラーにはDBから必要な情報を取り出したり、ビューに渡すための情報を用意し、どのビューに引き渡すかを指定する。
ビューにはbladeというLaravelのテンプレートエンジン専用の記述方法で記述する。コントローラーで用意した情報を{{変数}}のようにしてHTMLに組み込める仕組みになっている。
また、bladeはコンポーネントを使用して見た目を簡単に記述できるようになっている。下記のような記述が可能となる。というかHTMLベタ打ちではなくこちらを推奨していると思う。
button.blade.phpの内容
<button
{{ $attributes->merge(['type' => 'submit', 'class' => 'bg-gray-800']) }}>
{{ $slot }}
</button>
create.blade.phpの内容
<x-button>
送信する
</x-button>filamentのデフォルトコンポーネントは下記のフォルダーに配置されている。
- vendor\filament\filament\resources\views\components
具体的には、
.
├── card
├── dropdown
│ └── list
├── form
├── global-search
│ └── actions
├── header
├── layouts
│ └── app
│ ├── sidebar
│ └── topbar
├── modal
├── pages
│ └── actions
├── resources
│ └── relation-managers
├── stats
└── tabs
├── brand-icon.blade.php
├── brand.blade.php
├── button.blade.php
├── footer.blade.php
├── hr.blade.php
├── icon-button.blade.php
├── link.blade.php
├── notification-manager.blade.php
├── page.blade.php
├── topbar.blade.php
├── user-avatar.blade.php
├── widget.blade.php
└── widgets.blade.phpフォルダー構造。
.
├── app
│ ├── Console
│ ├── Exceptions
│ ├── Filament
│ │ └── Resources
│ │ ├── GuildSesource
│ │ │ ├── Pages…★CRUD画面の設定
│ │ │ │ ├── CreateGuild.php
│ │ │ │ ├── EditGuild.php
│ │ │ │ └── ListGuilds.php
│ │ ├── PostSesource
│ │ │ ├── Pages
│ │ │ │ ├── CreatePost.php
│ │ │ │ ├── EditPost.php
│ │ │ │ └── ListPosts.php
│ │ │ ├── RelationManagers
│ │ │ │ └── TagsRelationManager.php
│ │ ├── TagSesource
│ │ │ │ ├── CreateTag.php
│ │ │ │ ├── EditTag.php
│ │ │ │ └── ListTags.php
│ │ ├── UserSesource
│ │ │ │ ├── CreateUser.php
│ │ │ │ ├── EditUser.php
│ │ │ │ └── ListUsers.php
│ │ ├── GuildSesource.php...★CRUD画面の設定
│ │ ├── PostSesource.php…★CRUD画面の設定
│ │ ├── TagSesource.php…★CRUD画面の設定
│ │ └── UserSesource.php…★CRUD画面の設定
│ ├── Http
│ │ ├── Controllers
│ │ └── Middleware
│ ├── Models…★モデルの定義
│ │ ├── Guild.php
│ │ ├── Post.php
│ │ ├── Tag.php
│ │ └── User.php
│ └── Providers
├── bootstrap
│ └── cache
├── config
│ ├── app.php
│ └── auth.php
├── database
│ ├── factories
│ ├── migrations…★マイグレーションファイル
│ │ ├── 2023_08_04_033155_create_posts_table.php
│ │ ├── 2023_08_04_033200_create_tags_table.php
│ │ ├── 2023_08_04_035056_create_post_tag_table.php
│ │ └── 2023_08_04_215744_create_guilds_table.php
│ └── seeders
├── public
├── resources
│ ├── css
│ ├── js
│ └── views
├── routes
│ ├── api.php
│ ├── channels.php
│ ├── console.php
│ └── web.php
├── storage
│ ├── app
│ │ └── public
│ ├── framework
│ │ ├── cache
│ │ ├── sessions
│ │ ├── testing
│ │ └── views
│ └── logs
├── tests
│ ├── Feature
│ └── Unit
└── vendor
├── filament
│ ├── filament
│ ├── forms
│ ├── notifications
│ ├── support
│ └── tables