facebook twitter hatena line email

「Php/laravel/laravel5/validation」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
 
(同じ利用者による、間の9版が非表示)
行5: 行5:
 
         'title' => 'required|unique:posts|max:255',
 
         'title' => 'required|unique:posts|max:255',
 
         'body' => 'required',
 
         'body' => 'required',
 +
        'day' => 'required|date_format:"Y-m-d"',
 +
        'email' => 'required|email|min:10|max:255', // 10文字~255文字まで
 +
        'user_id' => 'required|numeric', // 数字のみ
 +
        'text' => 'required|between:5,10', // 5~10文字まで
 +
        'status_id' => 'required|numeric|between:5,10', // 値が5~10まで
 
     ]);
 
     ]);
  
行12: 行17:
 
         <nowiki><</nowiki>ul>
 
         <nowiki><</nowiki>ul>
 
             @foreach ($errors->all() as $error)
 
             @foreach ($errors->all() as $error)
                 <nowiki><</nowiki>li>{{ $error }}</li>
+
                 <nowiki><</nowiki>li><nowiki>{{ $error }}</nowiki></li>
 
             @endforeach
 
             @endforeach
 
         </ul>
 
         </ul>
行32: 行37:
 
             'password' => 'パスワード',
 
             'password' => 'パスワード',
 
     ],
 
     ],
 +
 +
==エラー時に前回のpostをそのままに==
 +
old()はRequest::old()のエイリアス、第2引数に初期値を入れる
 +
    <nowiki><</nowiki>form method="post" action="/users">
 +
        <nowiki><</nowiki>div class="form-group @if(!empty($errors->first('name'))) has-error @endif">
 +
            <nowiki><</nowiki>label>名前</label>
 +
            <nowiki><</nowiki>input type="text" name="name" value="<nowiki>{{old('name', $user->name)}}</nowiki>" class="form-control">
 +
            <nowiki><</nowiki>span class="help-block">{{$errors->first('name')}}</span>
 +
        </div>
 +
        <nowiki><</nowiki>div class="form-group @if(!empty($errors->first('email'))) has-error @endif">
 +
            <nowiki><</nowiki>label>Email</label>
 +
            <nowiki><</nowiki>input type="text" name="email" value="<nowiki>{{old('email', $user->email)}}</nowiki>" class="form-control">
 +
            <nowiki><</nowiki>span class="help-block">{{$errors->first('email')}}</span>
 +
        </div>
 +
        <nowiki><</nowiki>input type="hidden" name="_token" value="<nowiki>{{csrf_token()}}</nowiki>">
 +
        <nowiki><</nowiki>input type="submit" value="登録" class="btn btn-primary">
 +
    </form>

2016年8月13日 (土) 05:12時点における最新版

ルール追加

public function store(Request $request)
{
   $this->validate($request, [
       'title' => 'required|unique:posts|max:255',
       'body' => 'required',
       'day' => 'required|date_format:"Y-m-d"',
       'email' => 'required|email|min:10|max:255', // 10文字~255文字まで
       'user_id' => 'required|numeric', // 数字のみ
       'text' => 'required|between:5,10', // 5~10文字まで
       'status_id' => 'required|numeric|between:5,10', // 値が5~10まで
   ]);

テンプレートにエラー表示

@if (count($errors) > 0)
   <div class="alert alert-danger">
       <ul>
           @foreach ($errors->all() as $error)
               <li>{{ $error }}</li>
           @endforeach
       </ul>
   </div>
@endif

エラーメッセージの日本語化

https://gist.github.com/syokunin/b37725686b5baf09255b

以下をjaに変更

vi config/app.php
   'locale' => 'ja'

項目を日本語化

上記日本語化を入れた後

vi resources/lang/ja/validation.php
   'attributes' => [
           'id' => 'ユーザID',
           'password' => 'パスワード',
   ],

エラー時に前回のpostをそのままに

old()はRequest::old()のエイリアス、第2引数に初期値を入れる

   <form method="post" action="/users">
       <div class="form-group @if(!empty($errors->first('name'))) has-error @endif">
           <label>名前</label>
           <input type="text" name="name" value="{{old('name', $user->name)}}" class="form-control">
           <span class="help-block">{{$errors->first('name')}}</span>
       </div>
       <div class="form-group @if(!empty($errors->first('email'))) has-error @endif">
           <label>Email</label>
           <input type="text" name="email" value="{{old('email', $user->email)}}" class="form-control">
           <span class="help-block">{{$errors->first('email')}}</span>
       </div>
       <input type="hidden" name="_token" value="{{csrf_token()}}">
       <input type="submit" value="登録" class="btn btn-primary">
   </form>