サイトアイコン たーちゃんの「ゼロよりはいくらかましな」

【php】laraveるsampる -第4回-

仕事柄個人的にもお仕事をいただくことがあります。

今回はレガシーシステムをphpでリプレイスしたいという案件が入りそう。

 

laravelを使用するようなのですが、個人的には使ったことがないので、

早速環境構築して、サンプルを作ってみたいと思います。

 

今回はその第4回。(一旦の最終回となります)

第1回はこちら

第2回はこちら

第3回はこちら

 

 

 

環境構築前提

基本的な構築はこちらでお話していたように、

vagrantによるubuntuの環境をベースにしたいと思います。

 

 

入力して登録してみよう

入力フォームを追加

前回作成したビューに社員ID、社員名を入力する部分を以下のように追加します。

<form method='POST' action="{{action('EmployeeController@create')}}">
  @csrf
  
  社員ID:<input type='text' name='id' value="{{old('id')}}"><br />
  @foreach ($errors->get('id') as $errorMsg)
  {{ $errorMsg }}<br />
  @endforeach

  社員名:<input type='text' name='name' value="{{old('name')}}"><br />
  @foreach ($errors->get('name') as $errorMsg)
  {{ $errorMsg }}<br />
  @endforeach
  <input type='submit' value='登録'>
</form>

@foreach ($items as $item)
    {{ $item -> getData() }}<br>
@endforeach

 

Formの追加になります。

Formのactionはルーティング設定と同じように指定し、

action(コントローラクラス名@メソッド名)と記載します。

 

@csrfはクロスサイトリクエストフォージェリへの対策のための

トークン発行を行っています。

これをForm内に記載しないと、419エラーが発生し正しくactionが動作しません。

 

また、コントローラ側でvalidation(入力検証)を行った際の

エラー表示領域を設けています。

 

 

コントローラに登録メソッド追加

コントローラに登録メソッドを以下のように追加します。

public function list (Request $request)
    {
        $items = Employee::all();
        return view ('employee.list', ['items' => $items]);
    }

    public function create(Request $request)
    {
        //入力チェック
        $this->validate($request, [
            'id' => 'required|max:3',
            'name' => 'required',
        ]);

        $employee = new \App\Employee;
        $employee->employee_id = $request->id;
        $employee->employee_name = $request->name;
        $employee->save();
        return redirect()->to('list');
    }

 

入力チェックでは、社員ID、社員名はともに必須入力であり、

社員IDは最大3桁であることを検証しています。

 

入力チェックがOKであった場合には、

モデルクラスを新規作成し、値を挿入し登録(insert)しています。

登録後は同じ画面へのリダイレクトをするようにしています。

※データベース側での一意制約などは今回チェックはしていません。

 

 

モデルに作成日、更新日のカラムの未使用を設定

このまま登録をしてしまうと、モデルの基底クラスにて

作成日(created_at)、更新日(updated_at)のカラムもinsertしようとします。

 

今回作成したテーブルにはそのカラムは存在しないので、

未使用とするようモデル内に以下の記述を追加します。

class Employee extends Model
{
    // created_at、updated_atカラムがないので使用しないよう設定
    const CREATED_AT = null;
    const UPDATED_AT = null;

    public function getData()
    {
        return 'id:'. $this->employee_id. ' name:'. $this->employee_name;
    }
}

 

 

ルーティング設定

ルーティングとして以下を追加します。

Route::post('/create', 'EmployeeController@create');

 

ここまでの設定にてデータを入力し登録すると、

一覧に登録した内容が追加されていることが確認できると思います。

一旦まとめ

vagrantに仮想環境を作成し、Laravelのサンプルとして

社員IDと名前を入力して登録するまでの流れを

実装してみました。

 

ここまでの流れがわかれば、

あとは必要に応じて深いところまで知識を深める

土台としては十分できたのかなと思います。

 

まだ実際に仕事でお世話になってはいませんが、

いつか仕事で出会える日を夢見て・・・。

 

それでは!

 


にほんブログ村


人気ブログランキング

モバイルバージョンを終了