Я хотел добавить конкретный стиль к моему 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
собственности показывает это:
Так 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.