将 class 添加到 prestashop 1.7 中的 formField

Add a class to a formField in prestashop 1.7

在 prestashop 1.7 中,FormField class 用于定义注册和地址表单的表单字段,如下所示:

$format['firstname'] = (new FormField)
        ->setName('firstname')
        ->setLabel(
            $this->translator->trans(
                'First name',
                [],
                'Shop.Forms.Labels'
            )
        )
        ->setRequired(true);

现在使用旧的辅助表单可以在表单字段上设置 class,这样就可以在 CSS 中设置表单的样式。

FormField class 似乎没有任何与此相关的属性

private $name               = '';
private $type               = 'text';
private $required           = false;
private $label              = '';
private $value              = null;
private $availableValues    = [];
private $maxLength          = null;
private $errors             = [];
private $constraints        = [];

fieldFormatter 实现了核心中定义的渲染方法。

回答我的问题,是否可以在不修改核心的情况下向 FormField 添加属性?

似乎解决方案在于 formField 和表单的附加值-fields.tpl

->addAvailableValue('class', 'left')

并且在表格中-fields.tpl

{block name='form_field_item_other'}
<label {if $field.required and isset($field.availableValues.class)}
  class="required {$field.availableValues.class}"
{elseif $field.required} class="required"{/if} >
  <span>{$field.label}</span>
  <input name="{$field.name}" type="{$field.type}" value="{$field.value}" {if $field.required}required{/if}>
</label>
{/block}

通过这种方式,您还可以添加表单组、ID 和其他有趣的东西。