在webform中,我使用实体复选框组件,它允许我显示我需要使用视图的选项,具体取决于链接到哪个节点。但是,在设置这些字段的输出主题方面,我缺乏灵活性。在调试模式中,我看到所需的标记被插入到模板"form_element_label.html.twig“中。How是否为具有特定名称的webform重写此模板,并且仅覆盖特定字段?
我向ChatGPT问了这个问题,但她的解决方案行不通。然而,一般的逻辑是正确的。在主题的.theme文件中创建一个新函数:
function MYTHEME_theme_suggestions_webform_element_label_alter(array &$suggestions, array $variables) {
$element = $variables['element'];
if (isset($element['#webform_id']) && isset($element['#key'])) {
$suggestions[] = 'webform_element_label__' . $element['#webform_id'] . '__' . $element['#key'];
}
}在主题模板文件夹中创建一个新的模板文件: webform-element-label--WEBFORMID--ELEMENTKEY.html.twig
Drupal没有看到这个模式。我在哪里犯错误?
我看到的结果如下:对于我需要的表单,我重新定义了我需要的字段的标签模板,在其中插入我需要的HTML标记。重写视图模板不允许我这样做,但我能够显示我需要的材料类型的查看模式。现在我只需要把它隐藏在手风琴元素中,这样我就可以在点击链接时获得信息。

发布于 2023-05-12 14:22:20
您应该在您的twig.config中设置services.yml : debug: true,这将允许您查看当前的建议。
您应该看到您的建议,但是使用Drupal,即使您这样做了,并且您以'-‘’__传递了这个建议,它会告诉您它在那里,但是它实际上不会选择模板。
因此,请确保将-转换为_。
$suggestion = 'webform_element_label__' . $element['#webform_id'] . '__' . $element['#key'];
$suggestion = str_replace('-', '_', $suggestion);
$suggestions[] = $suggestion;在twig调试的情况下,它实际上会告诉您您需要的主题挂钩。
例如
函数mytheme_theme_suggestions_breadcrumb_alter(array &$建议,数组$variables) {
发布于 2023-05-29 13:27:08
我的错误是,我不专心地研究了这种形式成分的工作特点。在那里插入标记是不可能的,因为它是经过过滤的。我的方法与输出的挑逗材料是正确的。您只需考虑到链接和其他html标记将分别删除,您可以忘记弹出窗口。
https://drupal.stackexchange.com/questions/315718
复制相似问题