Laravel フォームの構築
- データベースの設定
テーブル、モデル、コントローラーの生成
php artisan make:model 作成したいモデル名 -m -c -r
→make:model:model生成
→-m:migration生成
→-c:controller生成
→-r:controller上に必要な関数を生成
マイグレーションの実行
生成したmigrationファイルを開き、必要なテーブルを追加。その後
php artisan migrate
ルーティングの設定
controllerのメソッドと対応。
web.phpへ追記。
Route::get('/任意のルート名', '生成したcontrollerの名称@index');
Route::post('/それとわかる任意のルート名', '生成したcontrollerの名称@store');
Route::delete('/それとわかる任意のルート名/{task}', '生成したcontrollerの名称@destroy');
また、リダイレクトも設定できる。
Route::get('/', function(){return redirect('/任意のルート名');});
また、httpsベースの場合は
\URL::forceScheme('https');
を最後に書く。
コントローラーの作成
生成したcontrollerを開く。
public function index()のところで、一覧表示を行う。
$小文字モデル名 = 作成したモデル名::all();
return view('流し込む対象bladeファイル名', ['連想配列の名前'] => $小文字モデル名);
で、流し込む対象bladeファイル先で、連想配列の名前でアクセスできる。
public function store(Request $request) のところでは、新たなモデルを作成
$小文字モデル名 = new 作成したモデル名;
$小文字モデル名 -> テーブルで追加したフィールド名 = $request -> テーブルで追加したフィールド名;
$小文字モデル名 -> save();
return redirect('/任意のルート名');
このようにすることで、テーブルで追加したフィールドを取得し、保存できる。
public function destroy(作成したモデル名 $小文字モデル名) のところでは、
$小文字モデル名 = delete();
return redirect('/任意のルート名');
ビューの作成
layout.blade.php
でファイルを作成し、
@yield('content')
と書いておけば、個別のページのviewの内容が反映できる。
また、個別では、
@extends('layout')
@section('content')
@endsection
で型を引き継げる。
sectionの中に、中身を書いていく。
例えば
@foreach($controllerで作った連想配列の名前 as $作りたい変数名)
{{ $作った変数名 -> テーブルのフィールド名 }}
@endforeach
モデルの確認
作成したモデルのファイルを開く。
変更する必要なし。
テスト実行
フォームのところに
{{ csrf_field() }}
を入れておく。
さらに削除ボタンのところには
{{ method_field('DELETE') }}
を追加しておく。