🐣 Laravel&Docker メモ
作成日: 2022/05/05
1

インストールしたもの

  • Docker(Docker-compose:複数のコンテナを同時に取り扱う)
docker-compose up -d workspace php-fpm nginx postgres
// -d:コンテナを起動した後に、ターミナルの操作に戻るためのオプション
  • Laradock(WebサーバーやデータベースをDocker上に簡単に構築するため)
  • Laradockディレクトリに移動してdocker-composeでLaravelをインストール
docker-compose exec workspace composer create-project --prefer-dist laravel/laravel . "6.20.0"

ルーティング

laravel/routes/web.php でルーティング追加

Route::get('/', 'ArticleController@index');

第一引数にはURLを文字列で、
第二引数には、どのコントローラーで何のメソッドを実行するのかを文字列で渡す。
ArticleController.phpのindexアクションメソッドを実行するという意味。
※ルーティングによって動くことになるコントローラーの各メソッドのことをアクションメソッド・アクションとよぶ。

コントローラー

laravel/app/Http/Controllers にArticleControllerを作るコマンド

docker-compose exec workspace php artisan make:controller ArticleController

Viewメソッド

return view('articles.index', ['articles' => $articles]);

第一引数はビューファイル名。
resources/views/articles ディレクトリのindexというビューファイルが表示される
第二引数はビューファイルに渡す変数の名称と、その変数の値を連想配列形式で指定。
'articles'というキーを定義することで、ビューファイル側で$articlesという変数が使用できるようになる。

異なる書き方

return view('articles.index')->with(['articles' => $articles]);
return view('articles.index', compact('articles'));

↑どれも同じ意味。

ビュー

resources/viewsディレクトリにbladeを作成する。

blade特有の記法

@yield('title') 

↑@section('title', '記事一覧')や @section('title')~@endsection で書いた内容が反映される。

@extends('app') //app.blade.phpをベースとして使うことを宣言
@foreach($articles as $article)〜@endforeach //phpのforeach
{{ $article->title }} // {{ }}で囲うことで、Bladeに渡された変数の値を表示
{!! nl2br(e( $article->body )) !!} // {!! !!} エスケープしないデータの表示

nl2br: 改行文字の前に HTML の改行タグを挿入する
e(): PHPのhtmlspecialchars関数をdouble_encodeオプションにデフォルトでtrueを指定して実行
https://readouble.com/laravel/6.x/ja/helpers.html#collection-method

phpの型キャスト

https://www.php.net/manual/ja/language.types.type-juggling.php#language.types.typecasting
変換しようとする型を括弧で括り、キャストする変数の前に置く。
↓配列の手前に(object)と記述することで、配列がオブジェクト型に変換される。

'user' => (object) [
            'id' => 1,
            'name' => 'ユーザー名1',
        ],

Docker

コンテナに入る:『対象のコンテナで、対象のコマンドを実行する』というもの

docker-compose exec コンテナ名 コマンド名

↓workspaceというコンテナでbashを起動する

docker-compose exec workspace bash

制作会社でフロントのコーディングやWordpressのテーマ開発をしてます。 本命はJavascriptです😋 目指せフロントエンドエンジニア👊