20210727のlaravelに関する記事は3件です。

【LaravelのMVCモデルについて】

前提 LaravelのMVCモデルについて自分なりにまとめてみました!! 間違っている部分やアドバイスいただけると嬉しいです。 (現時点:2020年7月27日) MVCの意味とは? ・Model(モデル):DBとのやりとりを行うところです。 ・View (ビュー):表示の担当を行うところです。(見た目を整える。HTML,CSS,Jsなど) ・Controller (コントローラー) :アプリ全体を統括する大黒柱的な存在です。(データをModelに渡したり、データーをViewに渡したりDBに保存してもらうなど) それぞれの頭3文字を取りMVCと言います。 私は上記の意味を理解してからLaravelでの開発にもスムーズに進むことが増えました!(エラーと葛藤している時間の方が長いですが。)笑 Laravelの勉強でも一番大切なのではと思うくらい重要だと個人的には思います。 ここからは一つずつ細かく解説していきます。 Model ・Modelは主にControllerで処理されたデータをデーターベースに格納する役割があります。 【Modelでできること】 ・データをDBに格納する ・DBからデータを引き出す ・DBのテーブルの関連付けが可能 View ・Viewは表示を担当するところでControllerで処理されたデータを元に、綺麗に見た目を整えて表示する役割があります。 Viewはロジック的なことはせず、ロジックは全てController,Modelに任せることが望ましいです。 【Viewでできること】 ・Controllerからデータを受け取る ・見た目を整える ・ヘッダーやフッターなどの使い回しができる Controller ・最後に一番重要なControllerです。Laravelのシステムを全て制御しているもので、データをModelに送信したり、フロントにデータを送信したりする役割があります。 【Controllerでできること】 ・データをModelに送信する ・データを受け取りフロントに送信する ・リクエストが来た際にどのViewを表示するか制御 まとめ 素のPHPだけで書くと重くエラーの原因も見つけにくいためLaravelのMVCモデルのファイルで分けることでエラーが起きた際も分かりやすいですし役割が明確なためコードが読みやすいのもありますね!! 読んでくれた方々ありがとうございます!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【AWS】CodeDeployを実装した時のエラーとその解決まで

はじめに CodeDeployでデプロイ自動化を実装しようとした時、エラーがいくつか出たため記録として残します。 ほぼ凡ミスのような感じですが、参考になれば幸いです。 条件 macOS: "11.2.3 Big Sur" php artisan -V # > Laravel Framework 6.20.30 php -v # > PHP 8.0.8 nginx -v # > nginx version: nginx/1.12.2 git --version # > git version 2.32.0 1. DownloadBundleでエラー The specified key does not exist. (訳)指定されたキーは存在しません。 解決 これは単純に、.circleci/config.ymlディレクトリにs3へのアップロードの記載をしていなかったことが原因でした。 config.yml // 省略 - run: name: upload artifacts to s3 command: aws s3 cp lantern.zip s3://${AWS_S3_BUCKET_NAME} // 省略 参考 2. AfterInstallでエラー : ① Script does not exist at specified location (訳)スクリプトが指定された場所に存在しません 解決 原因は、AfterInstallイベントで使用されていたシェルスクリプトが反映されていなかったことでした。 scripts/after_install.shを追加したけれど、これが本番環境の方には反映されていませんでした。 なので、本番環境の方に同じようにディレクトリとファイルを作成。 # ① scriptsディレクトリ作成 $ mkdir scripts # ② scriptsディレクトリ内に移動して、after_install.shファイルを作成 [scripts] $ touch after_install.sh # ③ ファイルの中を編集 [scripts] $ vi after_install.sh 以下は、after_install.shファイルの記述内容です。 after_install.sh #!/bin/bash set -eux cd ~/Lantern/lantern php artisan migrate --force php artisan config:cache よし、これでいけるだろう!と思い、もう一度デプロイ。。。 3. AfterInstallでエラー : ② Could not open input file: artisan (訳)入力ファイルを開くことができませんでした:artisan artisanコマンドが使えないということは指定しているディレクトリが違うのかな...と思ったので確認。 案の定、ディレクトリを指定しているところが違っていたため以下のように修正。 after_install.sh - cd ~/Lantern/lantern + cd ~/Lantern/lantern-ssh-deploy php artisan migrate --force php artisan config:cache よし、これでいけるだろう!! 無事デプロイ完了! おわりに 改めて振り返ると、ディレクトリの指定ミスがちらほらありました...。 少しはAWSと仲良くなれた気がします。 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel Blade のパーツ単体テストをする

これは何 Laravel の Blade テンプレートのパーツのみを単体テストする方法。 ページ全体のテストより依存関係の少ないパーツのみをテストしたい。 バージョン情報 php 7.4 laravel/framework 8.40.0 テスト例 Laravel の Testing の TestCase に view()メソッドが生えていました。これは実装をみると TestView クラスを作って返してくれるようです。TestViewクラスは assertSee() メソッドなど文字列チェックのメソッドが生えています。 use Illuminate\Foundation\Testing\TestCase class ClosedPlanIndexTest extends TestCase { public function testIndex( ) { $this->view('service.parts.hogehoge', [ 'exampleDependencyFlag' => true, ])->assertSee(<div>テスト文字列</div>, false); } 上記の通りHTMLタグも含めた文字列をチェック可能ですが、その場合にはassertSee()の第2引数の escape 設定を false にする必要があります。これをしないとテスト対象の文字列は <div> などの形式なのに &lt;div&gt;と比較してしまうことになり、意図しないテスト結果になってしまいます。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む