[gelöst] CTOOLS: exposed filters, auto-submit und exclude
am 24.09.2015 - 21:20 Uhr in
Hallo zusammen,
in einem View habe ich eingestellt, dass die exposed filters automatisch bei Änderung submitted werden sollen.
Soweit so gut. Nun möchte ich, dass einzelne exposed filters nicht automatisch submitted werden. Das geht mit Hilfe der Klasse "ctools-auto-submit-exclude", wie hier beschrieben:
https://www.drupal.org/node/1735254
Leider reichen meine Kenntnisse nun aber nicht mehr aus, um einzelnen Filtern eine Klasse zuzuweisen. In der Doku steht dazu:
If you want to exclude a field from the ctool-auto-submit-full-form auto submission, add the class ctools-auto-submit-exclude to the form element. With FAPI, add:
'#attributes' => array('class' => array('ctools-auto-submit-exclude')),
Mit der Form-API hatte ich noch nichts zu tun ... Wo soll der Code hin? Wie mache ich das? Bitte um eine kurze Anweisung ...
Besten Dank und Grüße!
- Anmelden oder Registrieren um Kommentare zu schreiben
Das gehört in ein kleines
am 24.09.2015 - 23:07 Uhr
Das gehört in ein kleines eigenes Modul, das hook_form_alter implementiert. In dieser Funktion kannst Du den Form-Array vor der Anzeige des Formulars entsprechend modifizieren. Dazu solltest Du Dich aber mit dem Aufbau dieses Arrays vertraut gemacht haben, aber dabei kann das Devel-Modul helfen.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Format der Attbiutzuweisung
am 28.09.2015 - 20:27 Uhr
Hallo Werner,
vielen Dank für Deine Hinweise. Ich habe mich etwas eingearbeitet und bin nun schon ein ganzen Stück weitergekommen. Stand:
Ich habe ein Modul erzeugt, das prinzipiell funktioniert:
<?php
function xyz_form_alter(&$form, &$form_state, $form_id)
{
$forms_to_exclude = array('views-exposed-form-view-recherche-block', 'views-exposed-form-view-recherche-weblinks-block');
if ( in_array($form['#id'], $forms_to_exclude) )
{
print_r($form); # debugging ...
$form['field_beschreibung_recherche_value']['#attributes'] = array('class' => array('ctools-auto-submit-exclude')); # funktioniert nicht!
}
}
?>
Allerdings will mir die Zuweisung der Klasse (via #attributes) nicht gelingen. Ich nehme an, dass alles "gut" ist, wenn in meinem print_r($form) beim gewünschten Feld eine dem submit entsprechende Attributierung auftaucht ... Kommt aber nicht ... Wie muss ich das genau machen?
[field_beschreibung_recherche_value] => Array
(
[#type] => textfield
[#size] => 30
[#default_value] =>
)
[submit] => Array
(
[#name] =>
[#type] => submit
[#value] => Anwenden
[#id] => edit-submit-view-recherche
[#attributes] => Array
(
[class] => Array
(
[0] => ctools-use-ajax
[1] => ctools-auto-submit-click
)
)
[#access] => 1
)
Herzlichen Dank im Voraus!
Auf die Reihenfolge kommt es an ...
am 28.09.2015 - 20:45 Uhr
jaja, da hätte ich print_r($form); wohl mal besser zwei Zeilen später ausgeführt :)
Ergo: Funktioniert alles wie es soll!
Besten Dank, Werner, also noch mal für die richtigen Stichworte!