外部の yml ルールセット (Symfony プロジェクトではありません) を使用して、Symfony2 の検証コンポーネント (2.1 ブランチの時点) でインポートされた csv ファイルのデータを検証しようとしています:
use Symfony\Component\Validator\Validation;
$builder = Validation::createValidatorBuilder();
$builder->addYamlMapping('rules.yml');
$validator = $builder->getValidator();
$row = (object)array('name' => 'foo');
$violations = $validator->validate($row);
これは私のymlファイルです:
stdClass:
properties:
name:
- MinLength: 10
ここで、Validator コンポーネントを使用して動的プロパティを持つオブジェクトを検証することができないように見えるという問題があります (stdClass
魔法の getter と setter を持つ他のクラスのように)。
そのコードを実行すると、次のようなメッセージが表示されます。
[Symfony\Component\Validator\Exception\ValidatorException]
Property forename does not exist in class stdClass
これは、強調表示された行のPropertyMetaclass.phpproperty_exists()
が原因であり、オブジェクトではなくクラスに対してチェックしているため、これは明らかに機能しません。
Validator を動的プロパティを持つオブジェクトと連携させる方法を知っている人はいますか?