カスタムバリデーションのクラスを追加するには、サービスプロバイダーで次のようにクラスを登録します。
追加するクラスの名前や位置はどのようなものでもかまいせん。ここでは、ディレクトリパス app/Services に CustomVaidator.phpを作成し、AppServiceProvider に登録することにします。
app/Providers/AppServiceProvider.php
<?php namespace App\Providers; use Validator; use Illuminate\Support\ServiceProvider; use App\Services\CustomValidator; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { Validator::resolver(function($translator, $data, $rules, $messages) { return new CustomValidator($translator, $data, $rules, $messages); }); } /** * Register any application services. * * @return void */ public function register() { // } }
次に、標準の Validator
を継承する CustomValidator
を作成します。
前回 AppServiceProvier.php
に直接登録したバリデーションルールを、こちらに移します。
app/Service/CustomValidator.php
<?php namespace App\Services; class CustomValidator extends \Illuminate\Validation\Validator { /** * kana * * @param string $attribute * @param string $value * @return bool */ public function validateKana($attribute, $value) { // かな、半角空白、全角空白、全角記号を許可 return preg_match("/^[ぁ-んー !-@[-`{-~]+$/u", $value); } }
こうして専用のバリデーションクラスを作成すると、それぞれのバリデーションルールは通常のメソッドとして実行できるようになり、ユニットテストの作成も容易になります。
$bool = CustomValidator::validateKana('kana', $request->get('kana'));
前回との重複になりますが、エラーメッセージをバリデーション言語ファイルの「Validation Language Lines」グループに追加します。
'unique' => ':attribute に指定された値はすでに存在しています', 'url' => ':attribute のフォーマットが正しくありません', // カスタムバリデーション 'kana' => ':attribute は全角のひらがなで入力してください',
これでふりがなバリデーションをどこでも利用できるようになりました。
'name_kana' => 'required|kana',
次回から、このクラスにいろいろなルールを登録していきましょう。
ところで、ふりがなに「カタカナ」を強要するサイト設計が多いことに苛立つのは私だけでしょうか?
無駄にカタカナを入力するとIMEの辞書学習が汚れ、その後の漢字変換のリズムが崩れるのです。名簿などの入力作業をすると誰でも体験できるでしょう。
カタカナルールは昔ながらの紙文化の遺物なのでしょう。手書きならばそのほうが識別しやすいに違いないですが、電子データにその配慮は必要ありませんよね。
メルマガ購読の申し込みはこちらから。
無駄にカタカナを入力するとIMEの辞書学習が汚れ、その後の漢字変換のリズムが崩れるのです。名簿などの入力作業をすると誰でも体験できるでしょう。
カタカナルールは昔ながらの紙文化の遺物なのでしょう。手書きならばそのほうが識別しやすいに違いないですが、電子データにその配慮は必要ありませんよね。