WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
Eloquent ORMでデータの作成2

Eloquent ORMでデータの作成2

このエントリーをはてなブックマークに追加

次にデータの新規作成を行うためにモデルを作成します。

Collectionモデルの作成

Collectionモデルを下記のように作成します。複数代入可能な属性を定義します。

app/models/Collection.php
<?php
 class Collection extends Eloquent{
 //複数代入可能な属性を定義する
 protected $fillable=array('code','title','category','content');
 }

新規作成用ルーター

そして、いよいよデータ新規作成用のルーターを作成します。下記のように記述します。

app/routes.php
/******************************************
*
* 新規作成
*
* getで新規作成用ページの表示
* postでバリデーション及びデータの作成
*
******************************************/

Route::get('collection/create',function(){
return View::make('collection/create');
});

Route::post('collection/create',array('before'=>'csrf',function(){
//POSTデータの受信
$inputs=Input::only(array('code','title','category','content'));
//バリデーションルールの設定
$rules=array(
'code'=>'required|max:20',
'title'=>'required',
'category'=>'required',
);
//バリデーション処理
$val=Validator::make($inputs,$rules);
//バリデーションNGなら
if($val->fails()){
return Redirect::back()
->withErrors($val)
->withInput();
}
//バリデーションOKなら
Collection::create($inputs);
return Redirect::to('collection');
}));
  • 10-12行目:getでアクセスした場合にapp/views/collection/create.blade.phpファイルを表示します。
  • 16行目:Input::only(配列)で、指定した配列のキーと同じフィールド名の連想配列を代入します。下記のコードと同じです。
    $inputs[‘code’]=Input::get(‘code’);
    $inputs[‘title’]=Input::get(‘title’);
    $inputs[‘category’]=Input::get(‘category’);
    $iputs[‘content’]=Input::get(‘content’);
  • 18-22行目:それぞれのフィールドにバリデーションルールを定義しています。requiredは、必須項目の指定です。
  • 24行目:Validator::makeメソッドで、バリデーターインスタンスを生成します。。第1引数に検証する値の配列、第2引数にバリデーションルールを指定します。第3引数は、オプションで、バリデーションメッセージを指定できます。
  • 26行目:failseメソッドは、データのバリデーションルールがNGかどうかを確認します。バリデーションNGなら真偽値のtrueを返します。この反対で、passesメソッドは、バリデーションがOKの場合にtrueを返します。
  • 28行目:RedirectクラスのwithErrorsメソッドで、引数のエラー(フラッシュ配列)を引き渡します。
  • 29行目:RedirectクラスのwithInputメソッドは、入力値を引き渡します。
  • 32行目:Model::create*メソッドで、Collectionモデルのインスタンス化と引数の連想配列データの保存を同時に行います。

バリデーションチェック

それでは、実際にデータを入力してみたいと思いますが、その前にバリデーションチェックを行います。何も入力せずに新規入力ボタンをクリックしてみます。

http://localhost/laravel4/public/collection/create

laravel4_075

バリデーションエラーが 表示されたら、OKですね。新規データを数件入力してみましょう。

« »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です