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 中选项值中的自定义字段不可见的主要内容,如果未能解决你的问题,请参考以下文章