【4】LaravelでPortfolioサイトをCMS付きで作るときのメモ【モジュール設計】

こんにちは!かたつむり(@Katatumuri_nyan)です!

主催している勉強会で、各自ポートフォリオとwebアプリを作ることになりました(*’▽’)
そこで、みんなが使えるように、CMS付のポートフォリオサイトを作ってみることに♡

入力できる項目はシンプルですが、はじめて作るCMSにはちょうどいいかなと思います。

Herokuにアップしたら良い感じに使えるように作っていきます♪

Forkしたら誰でも使えるようにする予定なので、お楽しみに!

GitHubでソースコードを管理しています!

最初から見る↓
【1】LaravelでPortfolioサイトをCMS付きで作るときのメモ【下調べ編】【1】LaravelでPortfolioサイトをCMS付きで作るときのメモ【下調べ編】

前回を見る↓
【3】LaravelでPortfolioサイトをCMS付きで作るときのメモ【DB設計編】【3】LaravelでPortfolioサイトをCMS付きで作るときのメモ【DB設計編】

laravelを学習

モジュール設計の前に、laravelってどんなものなのか学びます。
laravelはPHPでできていて、MVCモデルのフレームワークってのはなんとなくわかっている状態です。

  • それぞれのファイルの拡張子
  • viewはどんな風に書くのかな
  • ディレクトリ構造はどう?

拡張子

MVC全部.php

ビューについて

Laravel 8.x Bladeテンプレート
Laravel 8.x ビュー

ディレクトリ構造

Laravel 8.x ディレクトリ構造
Laravelのディレクトリ構造について学ぶ

モジュールの設計案

PortfolioCMSがどんな動きをするのか考えていきます。
MVCモデルで

基本的には、画面一覧DB設計書画面デザインを見ながら考えます。

画面一覧でページごとにURLを指定しているので、そのURLに沿ったコントローラーを作ることにしました。
そこから、モデルとかビューとかを考えていきます。

モジュール設計で悩んだこと

DBに接続するモデルはどう作る?

Laravel 8.x Eloquentの準備
こちらを読むと、DBに接続する際のモデルの作り方が載っています。

テーブルに合わせたモデルを作るだけで、DBに接続できちゃうんですねすごい

admin画面のグローバルメニューにプロフィール画像と名前を表示したい

共通だから、どこの時点でDBからデータ持ってくればいいか分からず悩む
(別ページに飛ぶときにコントローラーから毎回渡すの?)

どのページでも共通の変数を受け取れるようにしたい(カート内の商品個数を全ページのヘッダーに表示したい)
LaravelでViewComposerを使ってコントローラーをすっきりさせる

全ページにデータを渡せるようにできるらしい

indexのコントローラーはなんて名前?

/にアクセスした時のコントローラーって何て名前つけるの?

Laravel 8.x コントローラ

割と何でもよさそう

ログイン機能どうするか

ここで、adminのログイン機能を考えていないことに気づく…

ログインしているかどうかで表示が変わらないといけない…
どうやってやるんだろう…

あと、新規登録できるようにすると、他の人も登録できちゃうのでめんどくさいぞ←
ログイン情報はconfigとかに書いておいた方がいいんじゃないか?

### できること
- ポートフォリオサイトを作れる
- CMSにログイン
- プロフィールをCMSから登録・編集
- 作品一覧をCMSから登録・編集
- contact情報をCMSから登録・編集
- テーマカラーをCSMから変更

### 環境
- dockerで簡単に環境構築
- Herokuで簡単にデプロイできる

### 追加機能としてやりたいこと
- 作品の詳細説明を書けるページ(CMSから登録・編集)
- キャリア等のコンテンツブロックを入力・並べ替えて編集
- worksで言語や技術を登録する時に、プルダウンで選べるようにする
- 無い場合は、works登録画面から新規登録できる

と、色々調べたところ、Laravelにはログイン機能が簡単に実装できるそう。
Docker × Laravel 8 Jetstream でログイン、ユーザー登録、2要素認証を実装する

ただ、今回は練習で機能実装したい感はあるので、これは使わないで行こうかな。

オリジナルのログイン機能をつくる [Laravel]を参考にして、ログイン機能を実装したいと思います。

ログイン情報は、configに書くとソースをGithubに間違えてアップしたら見えちゃうので、Herokuの環境変数で対応することにしました。
herokuとGitHubにデプロイする時にパスワードやキー情報を隠したい時の対処方法

GithubからHerokuにアップするなら、Githubのシークレットキーでいけるんじゃないかな?

【Heroku】Github Actionsを利用してHerokuへ自動デプロイ

次回は、タスクの整理をしていきます。

コメントを残す

メールアドレスが公開されることはありません。