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

  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • 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
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
Weiter

Neue Kommentare

  • Arrrrg. Nix Tabelle :-D /*
    vor 3 Wochen 1 Tag
  • Textboxen mit Tabelle
    vor 3 Wochen 1 Tag
  • Du sollst ja auch keine
    vor 3 Wochen 1 Tag
  • Theme
    vor 3 Wochen 1 Tag
  • Welches Theme benutzt du
    vor 3 Wochen 1 Tag
  • Mit Responsive Raster hatte
    vor 3 Wochen 2 Tagen
  • Hallo Alex,um das Häkchen
    vor 3 Wochen 2 Tagen
  • Modul view_unpublished
    vor 3 Wochen 4 Tagen
  • Modul "override node options"
    vor 3 Wochen 4 Tagen
  • Im Grunde ist dass ein
    vor 3 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250270
Registrierte User: 20481

Neue User:

  • Aoirhic
  • Stevebok
  • Robertnobia

» Alle User anzeigen

User nach Punkten sortiert:
wla9463
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 14 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