固定量の値を11に設定するにはどうすればよいですか?


15

複数の値を持つフィールドを設定しています。設定できる値の最大固定量は10です。

もっと増やしたい場合は、これを無制限に設定する必要があります。

フィールドの固定値を11個の値に設定する方法はありますか?

回答:


20

カーディナリティオプションは、field_ui_field_edit_form()次のコード行を使用して関数にハードコーディングされています。

$form['field']['cardinality'] = array(
  '#type' => 'select',
  '#title' => t('Number of values'),
  '#options' => array(FIELD_CARDINALITY_UNLIMITED => t('Unlimited')) + drupal_map_assoc(range(1, 10)),
  '#default_value' => $field['cardinality'],
  '#description' => $description,
);

drupal_map_assoc(range(1, 10))数を10に制限しているのは行です。

ただし、(少なくともコアによって)最大カーディナリティーが検証される(またはさらに制限される)ようには見えないため、フォーム変更フックを使用してその値のオプションを追加するのは非常に簡単です:

function MYMODULE_form_field_ui_field_edit_form_alter(&$form, &$form_state, $form_id) {
  // Increase the max cardinality to 20
  $range = drupal_map_assoc(range(1, 20));
  $new_options =  array(FIELD_CARDINALITY_UNLIMITED => t('Unlimited')) + $range;

  // Change the options
  $form['field']['cardinality']['#options'] = $new_options;
}

私はこれを試してみましたが、副作用はまったくないようです。フィールドシステムは、設定した10を超えるカーディナリティを尊重し、管理UIでフィールドを編集するときに問題なく保存します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.