У меня есть форма редактирования кастомной enitity , которая передается контроллеру:
<?php
$form = $this->entityFormBuilder()->getForm($entity_quote, 'edit');
?>
Эта кастомная entity имеет поле reference на другую кастомную entity quote_design. Виджет для этого поля - Inline entity form - Complex.
Я написал этот код для отображения слова «Design» над каждой inline формой:
<?php
/**
* Implements hook_inline_entity_form_entity_form_alter().
*/
function entity_quotes_inline_entity_form_entity_form_alter(&$entity_form, FormStateInterface $form_state) {
$form_bundles = [
'quote_design',
];
if (
$entity_form['#bundle'] == 'quote_design') {
$entity_form['dummy_design_header_title'] = [
'#type' => 'html_tag',
'#tag' => 'h3',
'#value' => 'Design',
'#attributes' => [
'class' => ['dummy'],
],
];
}
}
?>
И теперь я вижу слово Design над каждой Inline формой:
Но мне нужно отобразить порядковый номер этого дизайна рядом со словом Design:
Как это реализовать?
Я пробовал так:
<?php
$created_designs = $form_state->getFormObject()->getEntity()->get('field_design')->getValue();
foreach (
$created_designs as $key => $value) {
$entity_form['dummy_design_header_title_' . $key] = [
'#type' => 'html_tag',
'#weight' => -100,
'#tag' => 'h3',
'#value' => 'Design ' . ($key + 1),
'#attributes' => [
'class' => ['dummy'],
],
];
}
?>
Но тут я получаю первую проблему:
А также я получаю вторую проблему:
Когда я получаю inline формы таким образом:
<?php
$form_state->getFormObject()->getEntity()->get('field_design')->getValue();
?>
Я получаю только сохраненные inline формы, но новых inline форм, добавленных с помощью кнопки «Add Another Design», там нет. Мне нужно отобразить заголовок с порядковым номером как для сохраненных, так и для новых, еще не сохраненных.