2013-11-27 52 views
5

我有一個嵌入式表單,化合物和inherit_data選項設置爲true。Symfony2複合表單,將字段與錯誤關聯

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->setErrorBubbling(false); 

    $builder->add('date_start', 'date', array(
     'label'    => 'form.date_start.label', 
     'widget'   => 'single_text', 
     'required'   => false, 
     'group'    => ['event', 'dates'] 
    )); 

    $builder->add('date_end', 'date', array(
     'label'    => 'form.date_end.label', 
     'widget'   => 'single_text', 
     'required'   => false, 
     'group'    => ['event', 'dates'] 
    )); 

    $builder->add('time_zone', 'alternate_timezone', [ 
     'label'    => 'form.timezone.label', 
     'field_help'  => 'form.timezone.help', 
     'empty_value'  => 'form.timezone.empty_value', 
     'required'   => false, 
     'group'    => ['event', 'dates'] 
    ]); 
} 

/** 
* {@inheritdoc} 
*/ 
public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults([ 
     'label'  => false, 
     'compound'  => true, 
     'inherit_data' => true 
    ]); 
} 

我不能將錯誤與我的字段相關聯。此表單的錯誤顯示在父表單上,而不是字段中。我在文檔中看到,除非表單是複合的,否則error_bubbling可能是錯誤的。

複合形式的解決方法是什麼?

謝謝

+0

我有我的形式一個領域,是繼承了這一問題。我無法在我的驗證例程中定位繼承的表單的名稱。該錯誤總是起泡到根形式。沒有任何改變error_bubbling或其他設置已爲我工作。 – lifo

回答

-1

隨着Symfony的化合物形式的 - 你可以定義驗證約束在化合物關係每個實體和所驗證期間產生的任何錯誤都將上述顯示/表單元素髮生錯誤的位置的附近。

例如 - 如果您發佈的表單實例綁定到「ExampleEntity」實體 - 您可以在您的bundle的validation.yml中爲該實體定義驗證約束。任何驗證錯誤都將顯示在其各自的子表單旁邊 - 即使在可能在多個子表單上發生驗證錯誤的集合中也是如此。

例的src/MyBundle /資源/配置/ validation.yml

App\MyBundle\Entity\ExampleEntity: 
     properties: 
      date_start: 
       - NotBlank: 
        message: Date start cannot be blank. 
      date_end: 
       - NotBlank: 
        message: Date end field cannot be blank. 
      time_zone: 
       - NotBlank: 
        message: Timezone cannot be blank. 
相關問題