6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Aura.Filter クロージャを使ったカスタムバリデーション

Last updated at Posted at 2014-10-04

汎用バリデーションライブラリとして Aura.Filter を使います。
https://github.com/auraphp/Aura.Filter#creating-and-using-custom-rules

Composer でインストール

composer.json
{
    "require": {
        "aura/filter": "~1.0"
    }
}

インストールします。

$ composer install

クロージャを使ったカスタムバリデーション

Aura.Filter でクロージャを使ったカスタムバリデーションを実装します。

Aura\Filter\RuleCollection クラスの setRule メソッドで、バリデーションルールを設定します。引数は、先頭から順に、対象フィールド名、エラーメッセージ、バリデーションルールとなります。バリデーションルールでは、引数の値がルールに適合すれば true 、それでなければ false を返します。

values メソッドで、バリデーションを実行します。全てのルールに適合すれば true 、そうでなければ false を返します。

aura.php
<?php
require_once __DIR__ . '/vendor/autoload.php';

$filter = (new \Aura\Filter\FilterFactory())->newInstance();

$filter->setRule(
    'foo',
    'エラー!!',
    function($data) {
        return $data === 'ok';
    }
);

$inputs = [
    'foo' => 'ng',
];

if ($filter->values($inputs) !== true) {
    print_r($filter->getMessages());
} else {
    echo 'valid' . PHP_EOL;
}

実行すると下記のようになります。

$ php aura.php
Array
(
    [foo] => Array
        (
            [0] => エラー!!
        )

)
6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?