こんにちは!かたつむり(@Katatumuri_nyan)です!
主催している勉強会で、各自ポートフォリオとwebアプリを作ることになりました(*’▽’)
そこで、みんなが使えるように、CMS付のポートフォリオサイトを作ってみることに♡
入力できる項目はシンプルですが、はじめて作るCMSにはちょうどいいかなと思います。
Herokuにアップしたら良い感じに使えるように作っていきます♪
Forkしたら誰でも使えるようにする予定なので、お楽しみに!
GitHubでソースコードを管理しています!
最初から見る↓
【1】LaravelでPortfolioサイトをCMS付きで作るときのメモ【下調べ編】
前回を見る↓
【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のコントローラーはなんて名前?
/
にアクセスした時のコントローラーって何て名前つけるの?
割と何でもよさそう
ログイン機能どうするか
ここで、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へ自動デプロイ
次回は、タスクの整理をしていきます。