2017-02-14 14 views
0

Я хотел добавить конкретный стиль к моему CollectionType в twig, и я получил решение здесь: Symfony/Jquery Collection of objects. Теперь у меня есть небольшая проблема, что я не могу решить:Сформируйте тематику и коллекции Symfony

У меня есть этот обычай form_row:

// src/MyBundle/Ressources/views/CustomForms  
{% block form_row %} 
     <div class="row"> 
      <div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}"> 
       <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
        {{- form_label(form, "", {'label_attr': {'class': 'pull-right'}}) -}} 
       </div> 

       <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
        {{- form_widget(form) -}} 
       </div> 

       <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
        {{- form_errors(form) -}} 
       </div> 
      </div> 
     </div> 

     <br/> 
    {% endblock %} 

Это прекрасно работает в одном случае, но теперь у меня есть FormFlow (CraueFormFlow) и один из моих мульти -steps форма:

class AddChildStep3 extends AbstractType { 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('childsFamily', CollectionType::class, array(
      'entry_type' => RelationshipType::class, 
      'allow_add' => true 
     )); 
    } 

    public function getBlockPrefix() 
    { 
     return 'AddChildStep3'; 
    } 

это делает коллекцию этой формы:

/** 
* {@inheritdoc} 
*/ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('relRole', EntityType::class, array(
      'class' => 'VSCrmBundle:RelRole' 
     )) 
     //->add('sourceId', PersonChildType::class) 
     ->add('destinationId', PersonRelationshipType::class); 
} 

/** 
* {@inheritdoc} 
*/ 
public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'VS\CrmBundle\Entity\Relationship' 
    )); 
} 

/** 
* {@inheritdoc} 
*/ 
public function getBlockPrefix() 
{ 
    return 'vs_crmbundle_relationship'; 
} 

и р РОБЛЕМА является то, что form_row, что я определил, прежде WORS хорошо для relRole последней формы, но destinationId собственности показывает это: enter image description here

Так DestinationId метка находится внутри <div class="col-lg-4... и виджет также внутри <div class=col-lg-4... и то внутри виджета у меня есть еще один раз метка внутри <div class="col-lg-4 ...

Я хотел решить эту проблему путем добавления нового пользовательского form_rom специально для этой части, так что я нашел имя блока в profiler->forms->my form->vars->unique_block_prefix = _AddChildStep3_childsFamily и попытался это:

{% block _AddChildStep3_childsFamily_entry_row %} 
    <div class="row"> 
     <div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}"> 
      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_label(form.relRole, "", {'label_attr': {'class': 'pull-right'}}) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_widget(form.relRole) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_errors(form.relRole) -}} 
      </div> 
     </div> 

     <br/> 

     <div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}"> 
      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_label(form.destinationId.firstName, "", {'label_attr': {'class': 'pull-right'}}) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_widget(form.destinationId.firstName) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_errors(form.destinationId.firstName) -}} 
      </div> 
     </div> 

     <br/> 

     <div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}"> 
      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_label(form.destinationId.lastName, "", {'label_attr': {'class': 'pull-right'}}) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_widget(form.destinationId.lastName) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_errors(form.destinationId.lastName) -}} 
      </div> 
     </div> 

     <br/> 

     <div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}"> 
      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_label(form.destinationId.bornOn, "", {'label_attr': {'class': 'pull-right'}}) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_widget(form.destinationId.bornOn) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_errors(form.destinationId.bornOn) -}} 
      </div> 
     </div> 

     <br/> 

     <div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}"> 
      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_label(form.destinationId.profession, "", {'label_attr': {'class': 'pull-right'}}) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_widget(form.destinationId.profession) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_errors(form.destinationId.profession) -}} 
      </div> 
     </div> 

     <br/> 
    </div> 
{% endblock %} 

Как написано в документации (http://symfony.com/doc/current/form/form_customization.html#how-to-customize-a-collection-prototype), но это не работает ...

пс: для информации мой HTML в этом случае

<div class="row"> 
     <div id="familyMembersList" data-prototype="{{ form_widget(form.childsFamily.vars.prototype)|e('html_attr') }}"> 
     </div> 
    </div> 

EDIT: Когда я иду в профилировщика/twig Я не вижу, что Twig использует мою пользовательскую строку ввода ... Может быть, имя настраиваемого блока неверно? Я нашел имя блока, которое мне нужно настроить в ответ на stackoverflow.

ответ

0

Хорошо, после некоторой боли в голове и нескольких попыток я обнаружил, что Symfony/Form/twig не хочет настраивать строку ввода. Я пробовал:

{% block _AddChildStep3_childsFamily_entry_widget %} 
    <div class="row"> 
     <div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}"> 
      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_label(form.relRole, "", {'label_attr': {'class': 'pull-right'}}) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_widget(form.relRole) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_errors(form.relRole) -}} 
      </div> 
     </div> 

     <br/> 

     <div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}"> 
      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_label(form.destinationId.firstName, "", {'label_attr': {'class': 'pull-right'}}) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_widget(form.destinationId.firstName) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_errors(form.destinationId.firstName) -}} 
      </div> 
     </div> 

     <br/> 

     <div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}"> 
      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_label(form.destinationId.lastName, "", {'label_attr': {'class': 'pull-right'}}) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_widget(form.destinationId.lastName) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_errors(form.destinationId.lastName) -}} 
      </div> 
     </div> 

     <br/> 

     <div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}"> 
      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_label(form.destinationId.bornOn, "", {'label_attr': {'class': 'pull-right'}}) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_widget(form.destinationId.bornOn) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_errors(form.destinationId.bornOn) -}} 
      </div> 
     </div> 

     <br/> 

     <div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}"> 
      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_label(form.destinationId.profession, "", {'label_attr': {'class': 'pull-right'}}) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_widget(form.destinationId.profession) -}} 
      </div> 

      <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12"> 
       {{- form_errors(form.destinationId.profession) -}} 
      </div> 
     </div> 

     <br/> 
    </div> 

    <br/> 
{% endblock %} 

И это работает даже не совершенно. Надеюсь, это поможет :)