Laravel5で修正ページの作成

前回は、データの一覧ページを作成しましたが、本日は、データの修正ページを作成したいと思います。

Updateアクションの作成

まず、GathersControllerのgetUpdateアクションメソッドを下記のように作成します。

app/Http/Controllers/GathersController.php

public function getUpdate($id)
 {
 $gather=Gather::find($id);
 return view("gathers.update")
 ->with('gather',$gather);
 }

Updateビューの作成

次に、Update用のビューページを下記のように作成します。

app/resources/views/gather/update.blade.php

@extends('app')
 @section('content')
 <div class="container">
 <h2>修正</h2>
 @if($errors->all())
 @foreach($errors->all() as $error)
 <p class="alert alert-danger">
 {{ $error }}
 </p>
 @endforeach
 @endif
 {!! Form::open(["class"=>"form-horizontal"]) !!}
 <div class="form-group">
 {!! Form::label("name","名前",["class"=>"col-sm-2 control-label"]) !!}
 <div class="col-sm-10">
 {!! Form::text("name",$gather->name,["class"=>"form-control"]) !!}
 </div>
 </div>
 <div class="form-group">
 {!! Form::label("code","Code",["class"=>"col-sm-2 control-label"]) !!}
 <div class="col-sm-10">
 {!! Form::text("code",$gather->code,["class"=>"form-control"]) !!}
 </div>
 </div>
 <div class="form-group">
 {!! Form::label("description","説明",["class"=>"col-sm-2 control-label"]) !!}
 <div class="col-sm-10">
 {!! Form::text("description",$gather->description,["class"=>"form-control"]) !!}
 </div>
 </div>
 <div class="form-group">
 <div class="col-sm-10">
 {!! Form::hidden("id",$gather->id) !!}
 {!! Form::submit("新規作成",["class"=>"btn btn-primary col-sm-offset-2"]) !!}
 </div>
 </div>
 {!! Form::close() !!}
 </div>
 @endsection

16行目:Form::textメソッドの第2引数に、コントローラから渡された$gathersモデル(オブジェクト)のnameパラメータを指定します。22行目、28行目も同様です。

33行目:$gathersオブジェクトのidパラメータをhidden要素で指定します。これで、URLのパラメータにidを添付せずにすみます。

postUpdateアクションの作成

そして、POST送信されたデータを処理するためのpostUpdateアクションを下記のように作成します。

app/Http/Controllers/GathersController.php

public function postUpdate(GathersPostRequest $request){
 $gather=Gather::find($request->id);
 $gather->name=$request->name;
 $gather->code=$request->code;
 $gather->description=$request->description;
 $gather->save();
 return redirect()->to("gathers");
 }

1行目:タイプヒントにフォームリクエスト(Laravel5で新規データの作成その2で作成)を指定します。これで、自動的にバリデーションを行ってくれます。

2行目hidden要素で送られてきたidを元にGatherモデルのオブジェクトを生成します。

3-5行目:$gatherオブジェクトのパラメータ(メンバ変数)に、受信したデータを代入します。

6行目:データベーステーブルに$gatherオブジェクトを書き戻(保存)します。

7行目:gathers/indexページへリダイレクトします。

本日は、以上です。次回は、データの削除を行います。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

このページの先頭へ