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

    id}}" method="POST">

  • モデルの確認

    作成したモデルのファイルを開く。

    変更する必要なし。

  • テスト実行

    フォームのところに

    {{ csrf_field() }}

    を入れておく。

    さらに削除ボタンのところには

    {{ method_field('DELETE') }}

    を追加しておく。