php - 如何将自定义选项传递给自定义 Symfony FormType 的树枝模板?
问题描述
如何将自定义选项直接Symfony 3.4
传递给自定义FormType的 Twig 模板?
语境:
我创建了一个自定义FormType
,它也使用自定义 Twig 模板来呈现其表单小部件。内置选项(例如 translation_domain、等lable_attr
)可在模板中直接访问。我怎样才能为我的自定义选项实现相同的目标?
// MyCustomType.php
class MyCustomType extends AbstractType {
public function getBlockPrefix() {
return 'my_custom_field';
}
public function configureOptions(OptionsResolver $resolver) {
$resolver->setDefaults([
'custom_option' => 'customOptionValue',
'translation_domain' => 'customTranslationDomain',
]);
$resolver->setAllowedTypes('custom_option', ['string']);
}
}
// form_widgets.html.twig
{% block my_custom_field_widget %}
{{ dump() }}
{{ translation_domain }}
{#{ custom_option }#}
{% endblock %}
当然这个表单小部件不是很有用,它只是转储可用的变量并且其内容translation_domain
是可以直接访问的。添加{{ custom_option }}
将导致错误,因为此选项/变量不可用。既不直接也不通过form.vars.custom_option
.
只有将选项设置为form var时,才能在模板中访问:
// MyCustomType.php
class MyCustomType extends AbstractType {
...
public function buildView(FormView $view, FormInterface $form, array $options) {
$view->vars['custom_option'] = $options['custom_option'];
}
}
// form_widgets.html.twig
{% block my_custom_field_widget %}
// fails
{{ custom_option }}
// works
{{ form.vars.custom_option }}
{% endblock %}
因此,所有内置选项都可用,form_vars
但也可以直接访问(例如,form.vars.translation_domain' AND as
translation_domain`)。
我如何为我的自定义选项实现相同的目标?
当然,通过选项访问form.vars...
是没有问题的。但是,我想知道这是否是正确的解决方案,因为可以直接访问内置类型。这些只是快捷方式(它们是如何添加的?)form.vars...
还是其他配置?
解决方案
推荐阅读
- c++ - 文件系统:错误无法删除:输入/输出错误
- java - MyBatis: IllegalArgumentException: Mapped Statements 集合不包含值
- python-3.x - Pandas Python groupby多列 - 根据具有特定值的第一列按第2列中的值对行进行排序
- python - 无法使用 plotly 创建 HTML 文件
- node.js - Discord.js 组件
- python - 在 wxPython 中使用 TextCtrl 对 StaticText 进行分组
- python - Keras/Tensorflow 的 CTC 损失;形状不可配置
- python - 我有一个将 .dav 文件发送到我的 ftp 的 DVR 如何在我的 wordpress 站点中将其转换为 mp4?
- angular - 我无法导航到我的关于选项卡在 coursera 上的 Angular js 作业中。为什么?
- mysql - 更新时的Mysql未知列