我有一个FieldFormatter,它输出一个DIV、一个表并附加一个JS库。
通常,在Drupal (例如表单API)中,可以根据您的喜好对呈现数组键进行标记吗?奇怪的是,在这种情况下,只有编号似乎是可行的。
如果它是一个错误,我没有发现它,并且日志中没有错误。
FieldFormatter呈现的工作方式有差异吗?
Working数字键:
public function viewElements(FieldItemListInterface $items, $langcode) {
// various logic ...
$build = [];
$build[0] = [
// placeholder div for the YouTube player
'#type' => 'container',
'#attributes' => [
'id' => ['youtube-timecode-player'],
],
];
// various logic ...
// attach our timecode.js javascript make the video ID available
$build[0]['#attached']['library'][] = 'mymodule/youtube_timecode';
$build[0]['#attached']['drupalSettings']['mymodule']['video_id'] = $video_id;
$build[1] = [
'#type' => 'table',
'#caption' => $this->t('Questions'),
'#header' => [$this->t('Time'), $this->t('Question')],
'#rows' => $timecodes
];
return $build;
}不工作的文本键(没有输出,也没有错误):
(我将0改为video,1改为timecode_list)
public function viewElements(FieldItemListInterface $items, $langcode) {
// various logic ...
$build = [];
$build['video'] = [
// placeholder div for the YouTube player
'#type' => 'container',
'#attributes' => [
'id' => ['youtube-timecode-player'],
],
];
// various logic ...
// attach our timecode.js javascript make the video ID available
$build['video']['#attached']['library'][] = 'mymodule/youtube_timecode';
$build['video']['#attached']['drupalSettings']['mymodule']['video_id'] = $video_id;
$build['timecode_list'] = [
'#type' => 'table',
'#caption' => $this->t('Questions'),
'#header' => [$this->t('Time'), $this->t('Question')],
'#rows' => $timecodes
];
return $build;
}发布于 2019-09-24 08:13:51
FormatterInterface::viewElement的返回值定义为:
Return值数组用于$items的可呈现数组,它是由从0开始的连续数字索引键控的子元素数组。
主题层无法处理字段值的其他数组,请参见如何打印多值字段的所有值,除第一个值外?
https://drupal.stackexchange.com/questions/286672
复制相似问题