こんにちは、フォームのテキスト フィールドのコレクションに問題があります。フィールドの 1 つにエラーがある場合、これらのエラーは親フォームにバブルされるため、フィールドではなく親自体に割り当てられます。次のコードの「ポイント」コレクションです。error_bubbling を false に設定しようとしましたが、効果がありません。
<?php
namespace JamaLvova\AdminBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use JamaLvova\AdminBundle\Form\Type\ExercisePointsFormType;
class StartContestFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('startYear', 'hidden')
/*
some other form elements
*/
->add('points', 'collection', array(
'type' => 'text',
'allow_add' => true,
'label' => 'Body za jednotlivé úlohy:',
'error_bubbling' => false,
'options' => array(
'error_bubbling' => false,
'attr' => array("maxlength" => "4", "size" => "4")
)
));
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'JamaLvova\AdminBundle\Form\StartContestForm',
));
}
public function getName()
{
return 'startContestForm';
}
}
StartContestForm には、次のように記述された $points プロパティがあります。
/**
* @Assert\Type(type="integer", message="Hodnota {{ value }} není celé číslo.")
* @Assert\Range(
* min = "0",
* max = "",
* minMessage = "Body nemohou být záporné",
* maxMessage = "Příliš mnoho bodů"
* )
*/
private $points;
小枝テンプレートでは、form.points を反復処理すると、フィールドにエラーはありませんが、form.points にはエラーがあります。どこに問題があるのか 誰にも分かりますか?または、何か不足していますか?どうもありがとう:-) (Symfony v. 2.1.4)
編集: 'type' => 'text' の代わりにフォームのコレクション ('type' => new PointsFormType()) を使用すると、何とか期待どおりに動作するようです。特定のフィールドにエラーを割り当てるには、常にフォームのコレクションを使用する必要があるということですか?