laravel5.5
3年ぶりに学習
laravel学習のよいサイトが見つからず、dotinstallを使用。
毎回の講義毎にソースをコピペできるのがありがたい。
しかしながらそれでも、毎回エラー、相当時間を使ってしまった。
先にhostのファイルとマウントするようした方が良かったか、その講義も事前にあって欲しい。
一通り早めに終わらした方がいいと思う。
6hが目標か、細かいところは気にしない。
講義は大雑把であり、あまり意味を考えると先に進めない、全体像を掴む方がよい。
(ヘルパ関数、コレクション型、クエリビルダは何気に使っているが、ドキュメントの調べ方や、
使い方等の説明はほとんどない。)
また別途vagrant環境構築に3hくらいかかった、とはいえ、確実に環境を作り、
laravelの学習を進めるにはアーカイブされているとはいえdotinstallが適していた。
Laravelインストール
php composer.phar create-project --prefer-dist laravel/laravel myblog "5.5.*"
フォルダ構成
●dababaseフォルダ
database.sqliteファイル を作成!!!
・migrationフォルダ
中身は削除
●publicフォルダ
●resourcesフォルダ
・viewsフォルダ
●routesフォルダ
アプリケーション 設定
DB設定
.envファイル
DB_CONNECTION=sqlite
以下は消す(必要なし)
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
configフォルダのapp.php 変更箇所 'timezone' => 'Asia/Tokyo', 'locale' => 'ja',
Model操作
php artisan tinker
modelはappの直下にある
データ挿入
App\Post::create(['title'=>'title 2','body'=>'body 2']);
Mass Assignmentの設定
作成したmodelに対し、 protected $fillable = ['title', 'body']; を追加(例)
データ表示
App\Post::all()->toArray();
ルーティング設定箇所
routesフォルダ
web.appに記載
Route::get('/', 'PostsController@index');
コントローラ作成
php artisan make:controller PostsController
Controllerの場所
app の中の Http の中の Controllers
サーバ起動
php artisan serve --host 192.168.33.10 --port 8000
View作成
view は resources の中の Views の中に作る
Post に関する view をまとめたい時、 posts フォルダを用意
今回 index アクションなので index としつつ、 Laravel では Blade というテンプレートエンジンが使えるので、 index.blade.php とする
Controller の方でこちらの view を指定
データ抽出、デバッグ 例
// $posts = \App\Post::all();
// $posts = Post::all();
// $posts = Post::orderBy('created_at', 'desc')->get();
$posts = Post::latest()->get();
// dd($posts->toArray()); // dump die
抽出したデータをViewに渡して、Bladeの機能を使って表示
controllerにて、viewへデータを渡す
// return view('posts.index', ['posts' => $posts]);
return view('posts.index')->with('posts', $posts);
CSS や JavaScript や画像
public フォルダの中
cssならcssフォルダにstyles.css
詳細一覧
作成箇所
ルーティング
コントローラ
モデルは呼び出すだけ
view
{!! nl2br(e($post->body)) !!}
本文の方は改行が入ってくる可能性もあるので、改行を br タグに変換したいので、まずは二重波括弧ではなく、中身をエスケープしないで値を出力するための {{!! !!}} という命令を使うリンク対応
URLの生成方法 Implicit Binding
Viewの共通部分を切り出す
共通部品の切り出し @yield, @extends, @section
views の中に今回は layouts フォルダを作ってあげて、その中に default.blade.php というファイルを作ってあげてその中に共通部品を入れ込んであげます。
新規リンク、バックの追加
新規追加
ルーティング追加
コントローラにcreateメソッド追加
view追加
フォームの作成
CSRF対策
新規のリンクにおいて、ルーティング追加に注意が必要
記事の追加
追加のコントローラのメソッドに注意要
Railsではメソッド名は固定だが、laravelでは自分で名前を作る
Angularでは、各ルーティングのtsファイルにて処理する
(Rails 例)
GET /users/new new new_user_path ユーザーを新規作成するページ(ユーザー登録)
POST /users create users_path ユーザーを作成するアクション
バリデーション
編集
更新
コントローラーの共通部分
php artisan make:request PostRequest
appの中のHttpにできている
削除
記事にコメント
php artisan make:model Comment --migration
databaseフォルダのmigrationフォルダにできる
修正後、
php artisan migrate
記事とコメントを結びつける
コメント追加
php artisan make:controller CommentsController
コメント削除
sqlite3 database/database.sqlite
外部キー制約を有効にする
app/Providers/AppServiceProvider.php