これは私が遭遇した例です。私は私のフィールドのラベルにいくつかのHTMLを入れようとしています。
$form['field_feedback']['und']['#title'] <- has the title
$form['field_feedback']['und'][0]['#title'] <- has the title
$form['field_feedback']['und'][0]['value']['#title'] <- has the title. (Works)
3つの#title属性が設定されていて、1つしか使用されないのはなぜですか?
表示されているのは、Drupalがフォームのフィールドを表す方法です。次のように分類されます。
$form['field_back']['und']
_(_'und'
_ for _'undefined'
_)は、フィールドが翻訳されたさまざまな言語です。 Drupalでは、コードで_LANGUAGE_NONE
_の_'und'
_を使用することをお勧めします。$form['field_feedback']['und'][0]
_、フィールドのさまざまなエントリを表します。たとえば、フィールドのカーディナリティが無制限で、そのフィールドに複数のエントリがある場合、それらは_$form['field_feedback']['und'][0]
_、_$form['field_feedback']['und'][1]
_などとして表示されます。$form['field_feedback']['und'][0]['value']
_。この場合、列名はvalue
で、ノード参照フィールドタイプの場合はnid
となります。フィールドに複数のデータ列が関連付けられている場合は、さらに多くの子が表示されます。これらはテキストフィールド/選択ボックス/特別なウィジェットで表され、最終的にフィールドの値を提供します。タイトルが階層全体のさまざまな要素に追加されているという事実は、正直に言うと偶然です。それらのタイトルがフォームに表示されるかどうかは、各_#title
_が含まれるレンダリング配列の特定の設定に依存します。
実際のフォームウィジェットのタイトルを変更するには、配列の一番下にあるフォーム要素(つまり、実際の入力要素(_$form['field_feedback']['und'][0]['value']
_など))のみを考慮する必要があります。
特定のフィールドに使用される要素/ウィジェットが非常に複雑になる可能性があることは、おそらく注目に値します。まだ持っていない場合は、 Devel module をインストールし、dpm()
関数を使用して_$form
_配列を検査する必要があります。これにより、ターゲットとする要素が配列のどこにあるかが正確に示されます。