奏鸣曲管理员表单字段在同一行

Sonata admin form field on same line

admin 的 configureformsfields 方法中有没有办法在同一行显示字段而不是一个在另一个下面?例如CSSclass?

您可以将 CSS class 和适当的显示选项添加到所选字段,如:

->add('fieldname', null, [
          'attr' => ["class" => "your-custom-class"]
      ])

您还可以修改 .form-group class(使所有字段内联):

.form-group {
    display: inline-block;
}

如果您希望输入与其标签一致:

div.sonata-ba-field.sonata-ba-field-standard-natural {
    display: inline-block;
}

可以找到有关如何创建 CSS 文件并将其加载到 Sonata 模板的教程

有一些解决方法: - 创建自定义表单类型以向表单字段添加新选项

class CustomTextType extends AbstractType
{
/**
 * {@inheritdoc}
 */
public function buildView(FormView $view, FormInterface $form, array $options)
{
    $view->vars['parent_div_class'] = $options['parent_div_class'];
}

/**
 * {@inheritdoc}
 */
public function getParent()
{
    return TextType::class;
}

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

/**
 * {@inheritdoc}
 */
public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(
        [
            'parent_div_class' => null,
        ]
    );
}
  • 创建扩展奏鸣曲的自定义表格主题

{% extends '@SonataDoctrineORMAdmin/Form/form_admin_fields.html.twig' %}

{% block form_row %}

{% if parent_div_class is defined and parent_div_class %}

   <div class="{{ parent_div_class }}">
       {{ parent() }}
    </div>

{% else %} {{ parent() }} {% endif %} {% endblock %}

  • 在你的后台设置这个主题class

    $this->setFormTheme(['@Admin/form/form_theme.html.twig']);

享受。

SonataCoreBundle为此提供了form_type选项。

# app/config/config.yml

sonata_core:
    form_type: horizontal

在 symfony 4 中,您可以在 config/packages/sonata_admin.yaml

中全局配置它
sonata_admin:
    options:
        form_type: 'horizontal'

给出: