Symfony oro平台:覆盖oro_datetime_小部件选项 上下文
实际上,我正在尝试更改Symfony oro平台:覆盖oro_datetime_小部件选项 上下文,symfony,orocrm,orocommerce,Symfony,Orocrm,Orocommerce,实际上,我正在尝试更改OroDateTimeType::class的时间输入的默认占位符 例如,我想要文本Horaires,而不是Temps 这是我的表单类型中的“我的表单”字段: ->add('expirationDate',OroDateTimeType::class[ “label'=>“app.subscription.fields.expirationDate”, ]) 在我看来: form_row(form.expirationDate) 问题 开始时,我尝试使用Symfony
OroDateTimeType::class
的时间输入的默认占位符
例如,我想要文本Horaires
,而不是Temps
这是我的表单类型中的“我的表单”字段:
->add('expirationDate',OroDateTimeType::class[
“label'=>“app.subscription.fields.expirationDate”,
])
在我看来:
form_row(form.expirationDate)
问题
开始时,我尝试使用Symfony 4占位符
选项作为日期时间类型:。它不起作用,因为orodetime
使用了不同的日期选择器,并且在加载时覆盖了Symfony值:
{# vendor/oro/platform/src/Oro/Bundle/FormBundle/Resources/views/Form/fields.html.twig #}
{% block oro_datetime_widget %}
{% set dateValidation = {'Date' : {}} %}
{% set timeValidation = {'Time' : {}} %}
{% if required %}
{% set dateValidation = dateValidation|merge({'NotBlank' : {}}) %}
{% set timeValidation = timeValidation|merge({'NotBlank' : {}}) %}
{% endif %}
{% if attribute(attr, 'class') is defined %}
{% set attrClass = attr['class'] %}
{% else %}
{% set attrClass = '' %}
{% endif %}
{% set options = {
view: 'oroui/js/app/views/datepicker/datetimepicker-view',
nativeMode: isMobileVersion(),
dateInputAttrs: {
placeholder: 'oro.form.choose_date'|trans,
id: id,
name: id,
class: 'input-small datepicker-input ' ~ attrClass,
'data-validation': dateValidation|json_encode(constant('JSON_FORCE_OBJECT')),
'aria-live': 'assertive',
autocomplete: 'off',
autocorrect: 'off',
autocapitalize: 'off'
},
datePickerOptions: {
altFormat: 'yy-mm-dd',
changeMonth: true,
changeYear: true,
yearRange: years|default('-80:+1'),
showButtonPanel: true
},
timeInputAttrs: {
placeholder: 'oro.form.choose_time'|trans,
id: 'time_selector_' ~ id,
name: 'time_selector_' ~ id,
class: 'input-small timepicker-input ' ~ attrClass,
'data-validation': timeValidation|json_encode(constant('JSON_FORCE_OBJECT'))
},
timePickerOptions: {
}
} %}
{% set id = 'hidden_' ~ id %}
{% set attr = attr|merge({
'data-page-component-module': 'oroui/js/app/components/view-component',
'data-page-component-options': options|json_encode(constant('JSON_FORCE_OBJECT'))
}) %}
{{ block('datetime_widget') }}
{% endblock oro_datetime_widget %}
如果我从选项
变量中更改值timeinputtrs.placeholder
。它起作用了。
但是,我想把这个变量传递给我的特定表单字段,而不是全局传递
更新
我最终选择更改oro.form。在我的项目中选择\u time
翻译
因此,在我的Resources/translations/messages.fr\u fr.yml
中,我创建了以下行:
oro:
表格:
选择时间:Horaires
认证:
说明:
主播:巴尔的摩
然后,我知道翻译是在var/cache/dev/translations/catalog.fr\u fr
中的一个文件中生成的:
覆盖Oro应用程序UI中任何文本的最简单方法是覆盖用于呈现该文本的消息的翻译。由于表单占位符也会被翻译,因此可以使用此技术。如果这是表单所需的唯一自定义项,请遵循 如果要覆盖HTML,可以通过以下方式扩展模板
但是,如果您想修改单个表单的标签,那么最好的方法是使用新选项修改和覆盖单个表单字段。感谢您提供了不同的方法。我已经用你的第一个解决方案更新了我问题的最后一部分。当你已经用Crowdin的更新或UI中的手动编辑覆盖翻译时,YAML更改将不再应用。在这种情况下,您必须编写数据迁移来更新数据库中加载的翻译。