Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Views ›

Exposed Filters - Formular überschreiben klappt nicht

Eingetragen von E-Fee (481)
am 30.03.2010 - 11:55 Uhr in
  • Views
  • Drupal 6.x

Hallo,

ich komme hier gerade auf keinen grünen Zweig. Ich habe in einem View einige hervorgehobene Filter, darunter auch einen, der ein Von-Bis-Datum beinhaltet. Dieses möchte ich gern verändern, habe mich auch schon ein ganzes Stück weit mit dem Überschreiben von Formularen beschäftigt.

Hintergrund: Ich möchte die Zeit zwischen Geburtsjahren auswählen lassen, habe den Filter also auf das Jahr beschränkt. Man kann ja für die Werte einen Zeitraum entweder relativ zum aktuellen Zeitpunkt oder zwischen zwei Jahreszahlen angeben. Ich möchte die auswählbaren Jahre aber in Relation zum Geburtsjahr des Benutzers haben - was mit einem selsbt eingefügten Formular an gleicher Stelle schon fein geklappt hat.
Ich hab es schon mit hook_form_alter() versucht, auch mit meinmodul_preprocess_views_exposed_form analog zu dem Vorschlag hier: http://drupal.org/node/320992
Wenn ich letzteres mache, kann ich sogar den Text auf dem Submit-Button ändern, grundsätzlich scheint das ja zu funktionieren.

Der Filter selbst steckt in "date_filter_1", ich habe mir das Array per dsm() ausgeben lassen.
Relevante Punkte, wo ich denke, dass ich was überschreiben könnte, sind:
$vars['form']['date_filter_1']['min']['#date_year_range'] da steht das von mir in Views gesetzte 1900:2000 drin
$vars['form']['date_filter_1']['min']['#title'] „Von“-Datum -> da möchte ich auch gern was anderes stehen haben
$vars['form']['date_filter_1']['min']['year']['#options'] = $optionarray; Das ist das Array, in dem ich für mein eigenes Formularfeld schon die korrekten Optionen erzeugt habe.
Dito für die 'max'-Werte.
default_date und default_to_date sind in diesem Zusammenhang wohl uninteressant, ist ja bloß die Voreinstellung.
Dann gäbe es noch $vars['form']['date_filter_1']['#children']

<div class="date-views-filter-wrapper">
<div class="container-inline-date date-clear"> </div>
<div class="date-clear form-item">
  <div class="description"> 
    <div class="container-inline-date date-clear-block">
      <div class="form-item" id="edit-date-filter-1-min-wrapper"> 
        <label for="edit-date-filter-1-min">„Von“-Datum: </label> 
        <div class="date-year">
      <div class="form-item" id="edit-date-filter-1-min-year-wrapper"> 
        <select name="date_filter_1[min][year]" class="form-select date-year" id="edit-date-filter-1-min-year" ><option value="" selected="selected">-Jahr</option><option value="1900">1900</option>...<option value="1999">1999</option><option value="2000">2000</option></select>
      </div>
    </div>
    <input type="hidden" name="date_filter_1[min][month]" id="edit-date-filter-1-min-month" value="0" />
    <input type="hidden" name="date_filter_1[min][day]" id="edit-date-filter-1-min-day" value="0" />
    <input type="hidden" name="date_filter_1[min][hour]" id="edit-date-filter-1-min-hour" value="0" />
    <input type="hidden" name="date_filter_1[min][minute]" id="edit-date-filter-1-min-minute" value="0" />
    <input type="hidden" name="date_filter_1[min][second]" id="edit-date-filter-1-min-second" value="0" />
  </div>
</div>
<div class="container-inline-date date-clear-block">
  <div class="form-item" id="edit-date-filter-1-max-wrapper"> 
    <label for="edit-date-filter-1-max">„Bis“-Datum: </label> 
    <div class="date-year">
      <div class="form-item" id="edit-date-filter-1-max-year-wrapper"> 
        <select name="date_filter_1[max][year]" class="form-select date-year" id="edit-date-filter-1-max-year" ><option value="" selected="selected">-Jahr</option><option value="1900">1900</option>...<option value="1999">1999</option><option value="2000">2000</option></select>
      </div>
    </div>
    <input type="hidden" name="date_filter_1[max][month]" id="edit-date-filter-1-max-month" value="0" />
    <input type="hidden" name="date_filter_1[max][day]" id="edit-date-filter-1-max-day" value="0" />
    <input type="hidden" name="date_filter_1[max][hour]" id="edit-date-filter-1-max-hour" value="0" />
    <input type="hidden" name="date_filter_1[max][minute]" id="edit-date-filter-1-max-minute" value="0" />
    <input type="hidden" name="date_filter_1[max][second]" id="edit-date-filter-1-max-second" value="0" />
  </div>
</div></div> </div> </div>

Ob es mir weiterhilft, wenn ich das jetzt zerschneide und mein Array da reinschreibe, sei mal dahin gestellt. Ich vermute, das mit dem Überschreiben würde ebenfalls nicht klappen. Egal, was ich zu ändern versuche, es klappt nichts davon ... also entweder habe ich da einen strukturellen Fehler drin oder die Sachen lassen sich nicht überschreiben.
Wobei, wenn ich dsm($vars['form']['date_filter_1']);  nach der Änderung noch mal ausgebe, kann ich sehen, dass $vars['form']['date_filter_1']['min']['year']['#options'] = $optionarray; zum Beispiel korrekt angenommen wurde ... nur im Formular keine Änderung.

Erwähnen sollte ich vielleicht auch noch, dass ich bei einer ähnlichen Geschichte vor etwa einem Monat mit views_pre_execute ein ähnliches Problem hatte (dereine hat mir beim Drupalcamp freundlicherweise Starthilfe gegeben, bloß funktionierte seine Version ebenso wenig wie meine), der Wert wurde per dsm() richtig angezeigt, aber nicht übernommen, da hab ich es dann über einen "hartkodierten" Teil gelöst, den ich in die build-info als weitere AND-Bedingung eingefügt habe. Das geht hier aber natürlich nicht, ich will ja keine DB-Abfrage, sondern die Ausgabe modifizieren.

Wo liegt hier mein ganz grundlegender Denkfehler?

LG
Sonja

‹ Ausgabe einer Views optisch anpassen [Gelöst] Bestimmtes View im neuen Fenster ohne das voreingestellte Theme anzeigen? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Man sollte mir ja nicht

Eingetragen von E-Fee (481)
am 30.03.2010 - 13:06 Uhr

Man sollte mir ja nicht nachsagen, dass ich schnell aufgebe ... leider sind manche Sachen einfach schwer rauszufinden, wenn man keine gute Lektüre dafür hat ... also der Knackpunkt war das "Widget".
Ich hatte mit die Geschichte mit dem Submit-Button noch mal angeschaut und festgestellt, dass der dem Formular gleichgeordnet ist, also bin ich eine Ebene höher gegangen und habe dsm($args) gemacht. Voilá, ich konnte sehen, was ich brauche, habe mich dann auch an der Syntax des Beispiels orientiert, und dieser code hier funktioniert jetzt:

$vars['widgets']['filter-date_filter_1']->widget = drupal_render($vars['form']['date_filter_1']['min']).drupal_render($vars['form']['date_filter_1']['max']);

Zumindest für die Ausgabe, die korrekte Weiterverarbeitung muss ich dann gleich mal testen!

LG
Sonja

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
Weiter

Neue Kommentare

  • Verwende doch das Tag dafür,
    vor 3 Wochen 1 Stunde
  • Guckst du hier: step by step
    vor 2 Wochen 6 Tagen
  • Guckst du hier: step by step
    vor 2 Wochen 6 Tagen
  • Ich habe ja keine Angst vor
    vor 4 Wochen 2 Tagen
  • Ist grundsätzlichmachbar – aber nichts für „einfach mal schnell“
    vor 4 Wochen 4 Tagen
  • Vielen Dank erst einmal, aber
    vor 4 Wochen 6 Tagen
  • Du hast die "Trusted host
    vor 4 Wochen 6 Tagen
  • Bitte genauer den aktuellen Lösungs-Ansatz beschreiben
    vor 6 Wochen 5 Tagen
  • Git und rsync sind die wichtigsten Werkzeuge
    vor 7 Wochen 1 Tag
  • Arrrrg. Nix Tabelle :-D /*
    vor 11 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250284
Registrierte User: 20509

Neue User:

  • Marvinkep
  • RandallFloop
  • Inga GuAph

» Alle User anzeigen

User nach Punkten sortiert:
wla9464
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 16 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association