Sylius 中选项值中的自定义字段不可见

Posted

技术标签:

【中文标题】Sylius 中选项值中的自定义字段不可见【英文标题】:Custom field in option values in Sylius not visible 【发布时间】:2022-01-16 01:49:45 【问题描述】:

使用 Sylius 1.10,我设法在选项中添加了一个新字段并且它是可见的。

但现在,我想在选项值中添加自定义字段。 但我无法在值列表中显示新字段:没有选项值的模板,只有 vendor/sylius/sylius/src/Sylius/Bundle/AdminBundle/Resources/views/ProductOption/_form.html.twig 中的 form_row(form.values) 行会自动创建以下内容

<div class="required field">
<div data-form-type="collection" id="sylius_product_option_values" class=" controls collection-widget" ...>

其中所有翻译都是可见的,代码字段,但我的自定义字段。 ;(

我怎样才能找到这个渲染,添加我的自定义字段? 我真的需要公开 form_row(form.values) 行、生成“代码”字段、我的字段并在翻译上使用foreach 吗?

还是我做错了什么? (这可能是正确的答案;))

php bin/console debug:container app.form.extension.type.product_option_value

给我

Information for Service "app.form.extension.type.product_option_value"
======================================================================

 ---------------- ---------------------------------------------------------------------------------------------------
  Option           Value
 ---------------- ---------------------------------------------------------------------------------------------------
  Service ID       app.form.extension.type.product_option_value
  Class            App\Form\Extension\ProductOptionValueTypeExtension
  Tags             form.type_extension (extended_type: Sylius\Bundle\ProductBundle\Form\Type\ProductOptionValueType)
                   form.type_extension
  Public           no
  Synthetic        no
  Lazy             no
  Shared           yes
  Abstract         no
  Autowired        yes
  Autoconfigured   yes
 ---------------- ---------------------------------------------------------------------------------------------------


 ! [NOTE] The "app.form.extension.type.product_option_value" service or alias has been removed or inlined when the
 !        container was compiled.

【问题讨论】:

不确定我是否正确理解了您的问题。您已经通过表单扩展添加了一个新字段,但它没有显示在您的 .twig 中?您是否已覆盖 form.html.twig ?如果您添加一个新字段,除非您覆盖模板,否则它不会显示,因为 sylius 在其模板中使用 'render_rest': false 你理解得很好;)。但问题是如何在选项中显示值的情况下覆盖 form.html.twig。目前显示所有语言和代码,不知道在哪里可以找到... 【参考方案1】:

要覆盖的正确模板是

Sylius/Bundle/UiBundle/Resources/views/Form/theme.html.twig

在这个块中你应该添加你的自定义字段

% block sylius_product_option_value_widget %
<div class="ui segment">
     form_row(form.code) 
     form_row(form.your_custom_field) 
    <div class="five fields">
        % for locale, translationForm in form.translations %
         form_row(translationForm.value, 'label': locale|sylius_locale_name) 
        % if 0 == loop.index % 5 %
    </div>
    <div class="five fields">
        % endif %
        % endfor %
    </div>
</div>
% endblock %

希望这对你有用。

【讨论】:

我知道这样的东西在某个地方,但我找不到。现在可以正常使用了!

以上是关于Sylius 中选项值中的自定义字段不可见的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 9:好奇的自定义字体行为

自定义字符类

C++11 用户自定义字面值

如何从一组自定义字段值中显示 Wordpress 帖子

python中的自定义pivot_ui聚合器?

R语言str_flatten函数通过自定义字符连接(concatenate)字符串向量中的字符串