Laravelまとめ

用語まとめ

  • 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

コメントする