目次
バリデーション
- バリデーション
- DBに格納するデータに満たしていないものを弾く
- 投稿機能などには必須
//バリデーションしたい値をvalidete関数に格納する
$request->validate([
"sales_day" => "required"
]);
{{-- バリデーションエラーメッセージを表示する お決まりのようなもの--}}
@if ($errors->any())
<ul>
@foreach($errors->all() as $error) {
<li>{{$error}}</li>
@endforeach
</ul>
@endif()
・・・
//old関数を使うとバリデーション後も入力値が残る
<input type="tel" id="client_code" name="client_code"
value="{{old(('client_code'))}}"
- バリデーションメッセージの日本語化
Laravelでバリデーションを日本語化する方法!
validation.phpのファイルは以下からコピペ
Laravel 8.x validation.php言語ファイル
- メッセージの変数名はattributesに指定することで日本語化可能
'attributes' => [
'sales_day' => '計上日付'
],
//赤字のメッセージ
@if ($errors->any())
<div class="text-danger">
@foreach($errors->all() as $error)
{{$error}}
@endforeach
</div>
@endif()
- 独自のバリデーションルールを作る
//ターミナルからルールファイルを作成
% php artisan make:rule GoodsCode
<?php
namespace App\\Rules;
use Illuminate\\Contracts\\Validation\\Rule;
class GoodsCode implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
//ここにルールの処理を書く(正規表現など)
//returnがfalseならエラー
return true;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
//独自のメッセージ attributeは入力変数name(または日本語補完したもの)が入る
return '正しい形式で入力してください(:attribute)';
}
}
使用方法はcontrollerのvalidate変数に作成したルール名を格納する
$request->validate([
"sales_day" => "required",
'goods_code' => ['require', new GoodsCode()]//複数の場合は配列にして指定可能
]);