Рейтинг:0

Изменить название цены продукта в форме

флаг cn

Как я могу получить доступ к метке поля цены продукта, чтобы изменить ее, например, на «количество» вместо «цена»?

HTML для поля:

<div class="js-form-item form-item js-form-type-commerce-number form-item-variations-entity-price-0-number js-form-item-variations-entity-price-0-number">

<label for="edit-variations-entity-price-0-number" class="js-form-required form-required">Price</label>

<input data-drupal-selector="edit-variations-entity-price-0-number" type="text" id="edit-variations-entity-price-0-number" name="variations[entity][price][0][number]" value="" size="10" maxlength="128" class="form-text required" required="required">

Я пробовал различные альтернативы, но не смог найти способ добраться до заголовка или поля цены.

function THEME_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
    $form['вариации']['сущность']['цена'][0]['число']= t('Сумма');
    $form['вариации']['сущность']['цена']['число']= t('Сумма');
    $form['цена']= t('Сумма');
}

Я также не смог найти ни одного примера использования form_alter в форме продукта Drupal 8 Commerce, в то время как это было возможно в Drupal 7.

флаг cn
Вам нужно использовать `hook_form_alter()` для правильного идентификатора формы. Итак, первый шаг — найти **идентификатор формы**, а затем использовать его для создания дампа формы и выяснить, что вам нужно изменить. См. https://drupal.stackexchange.com/questions/5802/how-can-i-find-the-form-id-of-a-form
флаг cn
Идентификатор формы = "commerce_product_default_add_form". Куда пойти отсюда?
флаг cn
Установите модуль Devel (не на производстве!) и используйте Kint. Затем вы можете сделать что-то вроде `kint($form)`, чтобы получить довольно красивый список всех переменных. https://www.drupaleasy.com/quicktips/drupal-8-debugging-kareful-klicking-kint
флаг cn
Это не работает: `функция THEME_commerce_product_default_add_form_form_alter(&$form, &$form_state, $form_id) {dpm($form_id); }`
флаг cn
Кажется, это работает: `функция THEME_form_alter(&$form, &$form_state, $form_id) { если ($form_id == 'commerce_product_default_add_form') {dpm($form); } }`
флаг cn
Это будет `THEME_form_commerce_product_default_add_form_alter` для более конкретного хука - у вас была первая часть `form_` в конце
Рейтинг:1
флаг cn
$form['вариации']['виджет']['сущность']['цена']['виджет'][0]['#название'] = t('Сумма');
флаг cn
Это именно то, что мне было нужно!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.