it-swarm-ja.com

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

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

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

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

14
jeroen

カーディナリティオプションは、次のコード行を使用して 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,
);
_

数を10に制限しているのはdrupal_map_assoc(range(1, 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でフィールドを編集するときに問題なく保存します。

20
Clive

同じ問題を解決するために、このサンドボックスプロジェクトを使用しました: https://www.drupal.org/sandbox/ydahi/2421885

値の数の範囲を設定するためのUIを提供します。

0
ymdahi