1
別のフィールドのカスタムコンストレイントにいくつかのフィールドの値を渡したいいくつかのフィールドを持つカスタムバリデータ)symfony(2.7) - >フォームを作成する - >フォームの別のフィールドからカスタムコンストレイントに値を渡す
フォーム:
...
->add('BsaKey', new \app\...\fieldTypes\RadioButtonType(), [
'choices' => [
...
],
'expanded' => true,
'multiple' => false,
...
])
->add('MeteringCodes', 'collection', [
'type' => new \app\...\formTypes\MeteringCodeType(),
'allow_add' => true,
'label' => false,
'options' => ['label' => $this->lang->get('MeteringCode.Caption')],
'constraints' => new \app\...\validators\NoIdenticMeteringCodes()
])
...
は、今私はMeteringCodeTypeのための私のカスタム制約にBsaKeyの値を渡す必要があります。
class MeteringCodeType extends \Symfony\Component\Form\AbstractType
{
public function buildForm(\Symfony\Component\Form\FormBuilderInterface $builder, array $options)
{
$builder->add('meteringCode', 'text', [
'...' => '...',
'constraints' => new \app\...\MeteringCodeConstraint(['param' => 'VALUE_OF_BsaKey'])
]);
}
}
どのように私はこれを達成することができますか?
P.S.私は...全体、ちょうどいくつかのスタンドアロンコンポーネントとしてのSymfonyを使用していない
EDIT:
class MeteringCodeValidator extends \Symfony\Component\Validator\ConstraintValidator
{
public function validate($value, \Symfony\Component\Validator\Constraint $constraint)
{
$BsaKey = $this->context->getRoot()->get('BsaKey')->getData();
...
}
}
から独立して動作するようです:
Thxを、私は解決策を見つけました"getTargets()"関数が返すオプションです。
"validate"関数がコンテキストクラス(現在の文字列値ではないもの)を返すようにしようとしましたが、うまくいきませんでした。 –
改行をしてmsgを送信しようとしましたが、私は "getTargets()"を使ってオブジェクトを "validate()" - funcktionの最初の引数として取得しようとしました。 –