私はtutorialを読んでいると私は理解しないいくつかの部分があります。symfonyの2カスタム制約
public function validatedBy()
{
return 'validator.unique';
}
が、これは良い方法ですか私は(docsから)get_class($this).'Validator'
のsymfonyのデフォルトを使用する必要がありますが
public function requiredOptions()
{
return array('entity', 'property');
}
public function targets()
{
return self::PROPERTY_CONSTRAINT;
}
上記の方法は必要ですか?それは私が代わりに完全修飾クラス名の、%my.validator.unique.class%
を使用できるように、単純にそのパラメータ宣言であるdocs
# MyApp/MyBundle/Resources/config/services.yml
parameters:
my.validator.unique.class: MyApp\MyBundle\Validator\UniqueValidator
services:
my.validator.unique:
class: %my.validator.unique.class%
arguments: [@doctrine.orm.entity_manager]
tags:
- { name: validator.constraint_validator, alias: validator.unique }
に表示されませんか?
約name
& alias
。私はname
が制約の「タイプ」であると言うことができますか? alias
はConstraint::validatedBy()
# Extension class
public function getAlias() {
return 'my';
}
で使用される別名が必要な上にありますか?私はどこでも使用されるmy
を見ない?
// get the existing registered namespaces for validator annotations
$namespaces = $container->getParameter('validator.annotations.namespaces');
// add our namespace under the alias myvalidation
$namespaces['myvalidation'] = 'MyApp\\MyBundle\\Validator\\';
// save it
$container->setParameter('validator.annotations.namespaces', $namespaces);
それはちょうど@Annotation
Constraint
クラスの作品に思えますか? validator.annotations.namespaces
は、単純なクラス名を返すことはバリデータがnew $classname()
ような単純なものを使用して、それを作成しようとしますので、あなたのバリデータクラスは、任意の依存関係を持っていない場合にのみ動作します、->validatedBy()
方法について非existantのparam