Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


apricot:usage:ja:validation

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apricot:usage:ja:validation [2020/08/27 23:00]
y2sunlight [ValidatorErrorBagクラス]
apricot:usage:ja:validation [2020/09/03 13:46] (現在)
y2sunlight [Apricot バリデーション]
行 1: 行 1:
-> 編集中 
- 
----- 
- 
 ====== Apricot バリデーション ====== ====== Apricot バリデーション ======
  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-08-25//  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-08-25//
行 21: 行 17:
   * Apricot バリデーション   * Apricot バリデーション
   * [[apricot:usage:ja:provider|Apricot サービスプロバイダー]]   * [[apricot:usage:ja:provider|Apricot サービスプロバイダー]]
 +  * [[apricot:usage:ja:authentication|Apricot ユーザ認証]]
   * [[apricot:usage:ja:utility|Apricot ユーティリティ]]   * [[apricot:usage:ja:utility|Apricot ユーティリティ]]
  
行 196: 行 193:
  
 \\ \\
- 
- 
- 
-\\ 
- 
  
 ===== ValidatorErrorBagクラス ===== ===== ValidatorErrorBagクラス =====
行 221: 行 213:
 </code> </code>
  
-''ValidatorErrorBag'' で使えるメソッドについては「[[apricot:usage:ja:errors-logging#エラーバッグ]]」を参照して下さい。以下は、HTMLテンプレード内での使用例です。+''ValidatorErrorBag'' で使えるメソッドについては「[[apricot:usage:ja:errors-logging#エラーバッグ]]」を参照して下さい。 
 + 
 +以下は、HTMLテンプレード内でエラーバッグの使用例です。
  
 <code php> <code php>
行 231: 行 225:
 </code> </code>
  
-''$errors'' はフレームワークによって自動的作られる''ValidatorErrorBag''型のテンプレート変数です。レスポンスインスタンスの ''withErrors()'' メソッド によってフラッシュに格納されたエラーバッグは、''$errors''取り出すことができます。+''$errors'' はフレームワークによって自動的作られる ''ErrorBag'' 型のテンプレート変数です。レスポンスインスタンスの ''withErrors()'' メソッド によってフラッシュに格納されたエラーバッグは、''$errors'' 変数を使って取り出すことができます。
  
 \\ \\
行 237: 行 231:
 ===== バリデーションの使用例 ===== ===== バリデーションの使用例 =====
  
-インターセプターメソッドのシグネチャには規則があります+バリデーションの使用例として、ユーザインターセプター( UserInterceptor )のinsertメソッドを以下示します。このメソッドユーザコントローラinsertアクションのインターセプターとして動作します
  
-  * **interceptorMethod( Controller $controller, [, mixed $... ] ):mixed** +{{fa>folder-open-o}} ** /your-project/app/Controllers/Interceptors **
-    - $controller --- インターセプターを呼び出したコントローラ +
-    - $... --- インターセプターを呼び出したアクションメソッドと同じ引数 +
-    * 戻り値 +
-      - 成功の場合 --- void を返す +
-      - 失敗の場合 --- Responseオブジェクトを返す +
- +
-以下にユーザインターセプター( UserInterceptor )を示します。 +
- +
-{{fa>folder-open-o}} ** /apricot/app/Controllers/Interceptors **+
 <code php UserInterceptor.php> <code php UserInterceptor.php>
 <?php <?php
-namespace App\Controllers\Interceptors; 
- 
-use Apricot\Input; 
-use App\Foundation\Controller; 
-use App\Foundation\ValidatorErrorBag; 
- 
 /** /**
- User Interceptor+ * Interceptor for insert method. 
 + * 
 + * @return void|\Apricot\Foundation\Response return Response if failed
  */  */
-class UserInterceptor+public function insert(Controller $controller)
 { {
-    /** +    $inputs = Input::all(); 
-     * Interceptor for insert method. + 
-     * +    // Validation 
-     * @return void|\Apricot\Foundation\Response return Response if failed +    $v =(new \Valitron\Validator($inputs)) 
-     */ +    ->rule('required', ['account','password']) 
-    public function insert(Controller $controller)+    ->rule('alphaNum','account'
 +    ->rule('unique','account','user','id'
 +    ->rule('ascii','password'
 +    ->rule('equals','password','password_confirmation'
 +    ->rule('email', 'email'
 +    ->labels(inputLabels('messages.user.create')); 
 + 
 +    if(!$v->validate())
     {     {
-        $inputs Input::all();+        $errorBag new ValidatorErrorBag($v->errors()); 
 +        return redirect(back())->withInputs()->withErrors($errorBag); 
 +    }
  
-        // Validation +    // Removes unnecessary inputs 
-        $v =(new \Valitron\Validator($inputs)) +    Input::remove('password_confirmation'); 
-        ->rule('required', ['account','password']) +} 
-        ->rule('alphaNum','account'+</code>
-        ->rule('unique','account','user','id'+
-        ->rule('ascii','password'+
-        ->rule('equals','password','password_confirmation'+
-        ->rule('email', 'email') +
-        ->labels(inputLabels('messages.user.create'));+
  
-        if(!$v->validate()) +この例では、Input::all() で入力変数を取得した後に、それを使って ''Validator'' のインスタンスを生成します。
-        { +
-            $errorBag = new ValidatorErrorBag($v->errors()); +
-            return redirect(back())->withInputs()->withErrors($errorBag)+
-        }+
  
-        // Removes unnecessary inputs +=== バリデーションルールの適用 ===
-        Input::remove('password_confirmation'); +
-    }+
  
-    /** +バリデーションルールの適用には、''rule()'' メソッドを使います。''rule()'' メソッドに渡す第1引数はルール名、第2引数は入力変数変数名、第3引数以降はオプションでルールによって異なります。この例では、以下のバリデーションルールを使用しています。
-     * Interceptor for update method. +
-     * +
-     * @param int $id +
-     * @return void|\Apricot\Foundation\Response return Response if failed +
-     */ +
-    public function update(Controller $controller, int $id) +
-    { +
-        $inputs = Input::all();+
  
-        // Validation +  * ''required'' --- 必須入力 
-        $v =(new \Valitron\Validator($inputs)) +  * ''alphaNum'' --- 半角英数入力 
-        ->rule('ascii','password'+  * ''unique'' --- ユニーク制約 
-        ->rule('equals','password','password_confirmation'+  * ''ascii'' --- 半角入力 
-        ->rule('email''email') +  * ''equals'' --- 確認入力 
-        ->labels(inputLabels('messages.user.create'));+  * ''email'' --- メールアドレス
  
-        if(!$v->validate()) +この他の使用できるルールについては、Valitronの[[https://github.com/vlucas/valitron/blob/master/README.md|README]]の ''Built-in Validation Rules'' の項を参照して下さい。但し、''unique''ルールはApricotの[[#uniqueルール|カスタムルール]]です。
-        { +
-            $errorBag = new ValidatorErrorBag($v->errors()); +
-            return redirect(back())->withInputs()->withErrors($errorBag); +
-        }+
  
-        // Removes unnecessary inputs +=== 入力変数のラベリング ===
-        Input::remove('password_confirmation'); +
-    } +
-+
-</code>+
  
-バリデション手順は以下の通りです。+''labels()'' メソッドを使うと[[#エラメッセージ]]で使用される入力変数にラベルを付けることができます。''labels()'' メソッドに渡す引数は、変数名とラベル連想配列です。この連想配列を作成するのに ''inputLabels()'' ボイラープレートを使用すると便利です。''inputLabels('messages.user.create')'' の引数に、言語メッセージのドット表記キーを指定します。以下はこの例で使用している言語ファイル内容です。
  
-  Input::all()でフォームデータを取得します +{{fa>folder-open-o}} ** /your-project/asetts/lang/ja ** 
-  Validatorの生成 +<code php messages.php> 
-    rule()メソッドで検証ルールを適用します +<?php 
-    labels()メソッドでエラーメッセージで使う項目名を設定します +return [ 
-  Validatorのvalidate()メソッドで検証します +    'user'=>[ 
-    * 検証エラーの時 +        'create'=>[ 
-      * withInputs()で入力変数をフラッシュ変数に保存します +            'account'=>'アカウト', 
-      * withErrors()でバリデーショのエラバッグをフラッシュ変数に保存します +            'password'=>'パスワド', 
-      * redirect()で前画面にリダイクトするResponseオブジェクトをします +            'password_confirmation'=>'パスワード(確認)', 
-    * 検証成功の時 +            'email'=>'メールアドス', 
-      * 不要になったバリデーション用のフォームデータを削除します+        ], 
 +    ], 
 +]; 
 +</code>
  
-=== 検証ルール ===+言語ファイ及び言語メッセジについては、[[apricot:usage:ja:frontend#多言語化]]を参照して下さい。
  
-  * **insert()** : レコード挿入時\\  +=== バリデションの実行 ===
-    * ''required'' --- 必須入力(account, password) +
-    * ''alphaNum'' --- 半角英数入力(account) +
-    * ''unique'' --- ユニーク制約(account) +
-    * ''ascii'' --- 半角入力(password) +
-    * ''equals'' --- 確認入力(password password_confirmation) +
-    * ''email'' --- メルアドレス(email)+
  
-  * **update()** : レコド更新時\\  +バリデションの実行には、''validate()'' メソッドを使用します。バリデーションが失敗した時、''errors()''ソッでバリデーションエラーを取得し、それを withErrors() を使って [[apricot:usage:ja:validation#validatorerrorbagクラ|エラーバッグ]]としてフラッシュ変数に保存します。そして、redirect()で前画面にリダイレクトするレスポンスオブジェクトを生成しそれを返します。
-    * ''ascii'' --- 半角入力(password) +
-    * ''equals'' --- 確認入力(password = password_confirmation) +
-    * ''email'' --- ールアス(email)+
  
 \\ \\
  
apricot/usage/ja/validation.1598536812.txt.gz · 最終更新: 2020/08/27 23:00 by y2sunlight