LoginSignup
0
1

More than 1 year has passed since last update.

【Drupal】フォームフィールドをカスタムしたい時のフック関数

Posted at

例えば、カスタムしたいフィールドを含むコンテンツタイプのシステム内部名称が「hoge_content_type」、
カスタムしたいフィールドのシステム内部名称が「field_fuga_date」とする。
またfield_fuga_dateのフィールドは日付型でyyyy/mm/ddからyyyy/mmの形式に変更したいとする。

yyyy/mm形式のフィールド

image.png

通常のフィールドの時

<?php

use Drupal\Core\Form\FormStateInterface;

/**
 * Implements hook_form_alter().
 */
function MY_MODULE_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  if ($form_id == 'node_hoge_content_type_edit_form') {
    $form['field_fuga_date']['widget'][0]['value']['#date_date_element'] = 'month';
    $form['field_fuga_date']['widget'][0]['value']['#date_date_format'] = 'Y-m';
  }
}

$form_idの値は、念の為kint関数を用いるかしてコンテンツ登録画面にアクセスし正しい値を確認した方が良い。

Paragraph内のフィールドの時

 /**
  * Implements hook_field_widget_WIDGET_TYPE_form_alter().
  */
 function MY_MODULE_field_widget_entity_reference_paragraphs_form_alter(&$element, &$form_state, $context) {
   if ($element['#paragraph_type'] == '<パラグラフのシステム内部名称>') {
     // yyyy/mmの形式にする
     $element['subform']['field_fuga_date']['widget'][0]['value']['#date_timezone'] = 'Asia/Tokyo';
     $element['subform']['field_fuga_date']['widget'][0]['value']['#date_date_element'] = 'month';
     $element['subform']['field_fuga_date']['widget'][0]['value']['#date_date_format'] = 'Y-m';
   }
 }
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1