_hook_form_FORM_ID_alter
_を使用して、select要素の1つにCSSクラスを追加しようとしています。
CSSクラス「フォームコントロール」を_<select id="edit-shs-term-node-tid-depth-select-1">
_のクラスに追加しようとしています。
私はそれを追加し、_drush cc all
_も実行しましたが、selectのクラスには何も追加されていません。
[〜#〜] html [〜#〜]
_ <form action="/properties" method="get" id=
"views-exposed-form-view-property-page-master" accept-charset="UTF-8" class=
"jquery-once-1-processed">
<div>
<div class="views-exposed-form">
<div class="views-exposed-widgets clearfix">
<div id="edit-title-wrapper" class=
"views-exposed-widget views-widget-filter-title">
<label for="edit-title">Search</label>
<div class="views-widget">
<div class="form-type-textfield form-item-title form-item form-group">
<input class="form-control form-text" type="text" id="edit-title" name=
"title" value="" size="30" maxlength="128" />
</div>
</div>
</div>
<div id="edit-field-developer2-tid-wrapper" class=
"views-exposed-widget views-widget-filter-field_developer2_tid">
<label for="edit-field-developer2-tid">Developer</label>
<div class="views-widget">
<div class=
"form-type-select form-item-field-developer2-tid form-item form-group">
<select class="form-control form-select" id="edit-field-developer2-tid"
name="field_developer2_tid">
<option value="All" selected="selected">
- Any -
</option>
</select>
</div>
</div>
</div>
<div id="edit-shs-term-node-tid-depth-wrapper" class=
"views-exposed-widget views-widget-filter-shs_term_node_tid_depth">
<label for="edit-shs-term-node-tid-depth">Location</label>
<div class="views-widget">
<div class=
"form-type-textfield form-item-shs-term-node-tid-depth form-item form-group shs-wrapper-processed">
<input class=
"element-invisible shs-enabled form-control form-text shs-processed"
type="text" id="edit-shs-term-node-tid-depth" name=
"shs_term_node_tid_depth" value="All" size="60" maxlength="128" />
<select id="edit-shs-term-node-tid-depth-select-1" class=
"shs-select form-select shs-select-level-1" style=
"display: inline-block;">
<option value="0">
- None -
</option>
</select>
</div>
</div>
</div>
<div id="edit-field-property-type-tid-wrapper" class=
"views-exposed-widget views-widget-filter-field_property_type_tid">
<label for="edit-field-property-type-tid">Property Type</label>
<div class="views-widget">
<div class=
"form-type-select form-item-field-property-type-tid form-item form-group">
<select class="form-control form-select" id=
"edit-field-property-type-tid" name="field_property_type_tid">
<option value="All" selected="selected">
- Any -
</option>
</select>
</div>
</div>
</div>
<div class="views-exposed-widget views-submit-button">
<button class="btn btn-info form-submit" id="edit-submit-view-property" name=
"" value="Apply" type="submit">Apply</button>
</div>
</div>
</div>
</div>
</form>
_
template.php
_/*
* implements hook_form_FORM_ID_alter
*
*/
function directbootstrap_form_views_exposed_form_view_property_page_master_alter(&$form, &$form_state, $form_id) {
$form['shs_term_node_tid_depth']['#attributes'][] = array('class' => array('form-control'));
}
_
[〜#〜]編集[〜#〜]
質問を更新しました
私が達成しようとしているのは、階層選択にクラス「フォームコントロール」を挿入することです。しかし、関数内にdpm($form);
を挿入した後。私が見つけることができるのは、_shs_term_node_tid_depth
_自体ではなく、要素_<select>
_の配列だけです。
これが私のtemplate.phpです
_/**
* implementation of hook_form_FORM_ID_alter()
*/
function directbootstrap_form_views_exposed_form_alter(&$form, &$form_state, $form_id)
{
if ($form['#id'] == 'views-exposed-form-view-property-page-master')) {
$form['shs_term_node_tid_depth']['#attributes']['class'][] = 'form-control';
}
}
_
必要なもの:
$form['shs_term_node_tid_depth']['#attributes'] = array('class' => array('form-control'));
以上の簡潔なバージョン:
$form['shs_term_node_tid_depth']['#attributes']['class'][] = 'form-control';
ビューが公開されたフォームは...楽しいです。たとえば、取得するフォームIDはalwaysになりますviews_exposed_form
、HTMLまたは他の場所に表示されるIDに関係なく。そのため、現在、フォーム変更関数の名前は正しくありません。
PHP=側の正しいIDでフォームを変更し、フォームの他の何か、おそらくHTML ID自体からコンテキストを取得する必要があります。
したがって、あなたが探しているものの基本的なバージョンは
function MYMODULE_form_views_exposed_form_alter(&$form, &$form_state, $form_id) {
if ($form['#id'] == 'views-exposed-form-view-property-page-master')) {
$form['shs_term_node_tid_depth']['#attributes']['class'][] = 'form-control';
}
}
関数名を変更したら、必ずキャッシュをクリアしてください。