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

Ausgewählten Wert einer Auswahlliste per php auslesen

Eingetragen von Anonymous (0)
am 28.01.2014 - 11:54 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x

Hallo,
ich habe mir eine neue Namenskonvention für meine Inhaltstypen vom Typ 'Datei' ausgedacht, und schreibe jetzt ein Modul, dass mir meine Nodes auf die neue Namenskonvention prüft und bei Bedarf ändert. Der Inhaltstyp enthält eine Datei, sowie einige Metadaten, die man beim hochladen angeben muss, z.B. aus welchem Jahr die Datei stammt oder zu welcher Kategorie sie gehört.
Im Node-Title soll nun die Kategorie und der Dateiname enthalten sein, die Kategorie wird über eine Auswahlliste ausgewählt.

Wie liest man per php den gewählten Wert einer Auswahlliste aus?

Die möglichen Werte einer Auswahlliste werden ja in einer Datei in der Datenbank gespeichert. In der Tabelle des Auswahlfeldes steht unter field_fieldname_value der key, z.B. value_1. Wie wird jetzt aber dieser 'key' seinem Wert zugeordnet (value_1|Wert 1) und wie kann ich den Wert per php auslesen?

Gruß
Frank

‹ Modul mit unterschiedlichen Konfigurationen einbinden Modul mit drupal_get_form entwickelt - wie führe ich in drupal 7 auf vorhergehende Seite zurück? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

HAllo, so ganz klar ist mir

Eingetragen von oteno (775)
am 28.01.2014 - 13:10 Uhr

HAllo,
so ganz klar ist mir die Sache nicht, die Du willst.
Aber erster Anlaufpunkt sollte eigentlich die API sein und keine selbstgestrickten PHP-Abfragen. Ich schätze, das hier was dabei ist für Dich: https://api.drupal.org/api/drupal/modules!field!field.info.inc/7
Gruß
Christian

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo,danke für deine

Eingetragen von nezar (nicht überprüft) (0)
am 28.01.2014 - 13:44 Uhr

Hallo,
danke für deine Antwort.
Ich versuche in meinem Modulcode herauszubekommen, welche Kategorie ein Benutzer einem neuen Inhalt vom Typ 'Datei' gegeben hat, z.B. Neubau, Altbau, etc.. Wenn ich mir den Node über node_load hole, und dann auf das Feld zugreife und mir das mal probehalber ausgeben lasse steht da nur 'Array'. Was ich brauche ist ein Weg bis auf den tatsächlich ausgewählten Wert zuzugreifen, z.B. 'Neubau', damit ich dies als Teil des neuen Nodetitles benutzen kann.
Ich hoffe ich konnte mich halbwegs klar ausdrücken. Hier noch etwas Code:

<?php

    $query
= db_select('node', 'n')
    ->
fields('n', array('nid', 'title'))
    ->
condition('type', 'datei', '=')
    ->
execute();

   
$array = array();
        while (
$record = $query->fetch()) {
       
$pos = strpos($record->title, '=>');
        if (
$pos === FALSE) {           
           
$node = node_load($record->nid);
           
$kategorie = $node->field_kategorie;
           
$string = "Kategorie: " . $node->field_kategorie;
                       
$array[] = $string;           
        }

?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

wenn Du 'print_r($string)'

Eingetragen von oteno (775)
am 28.01.2014 - 13:32 Uhr

wenn Du 'print_r($string)' machst (was ich dann aber umbenennen würde ;) ), siehst Du doch deine Werte, oder?, und kannst dann darauf zugreifen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nein, leider nicht. In

Eingetragen von nezar (nicht überprüft) (0)
am 28.01.2014 - 13:45 Uhr

Nein, leider nicht.
In '$kategorie' steht nach einem '$kategorie = $node->field_kategorie;' nur 'Array', kein Wert.
Ein print_r($node->field_kategorie); gibt einfach nur '1' zurück.

  • Anmelden oder Registrieren um Kommentare zu schreiben

mach eine var_dump

Eingetragen von ronald (3857)
am 28.01.2014 - 14:15 Uhr

auf das $node object.

Das liefert dir dann zwar sehr viel, aber eben auch die gewünschte Struktur, aus der du dann den richtigen Zugriff ableiten kannst.

  • Anmelden oder Registrieren um Kommentare zu schreiben

das hier gibt die Kategorie

Eingetragen von oteno (775)
am 28.01.2014 - 14:48 Uhr

das hier gibt die Kategorie im Klartext aus, kannst Du ja einbauen:

$values = field_info_field('field_kategorie');
print_r ($values['settings']['allowed_settings']);

ob das so ganz konform ist (multilingual usw.. usw...), weiß ich jetzt nicht, ist jetzt mal eine Anregung - schau Dir auch mal das Array genauer an.
Gruß
'Christian

edit:
so in der Art könntest Du eine Zuweisung dann machen, (geht sicher viel schöner..)
$values = field_info_field('field_kategorie');
$key = $node->field_kategorie['und'][0]['value'];
print $values['settings']['allowed_values'][$key];

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vorerst ist das die Lösung

Eingetragen von nezar (nicht überprüft) (0)
am 28.01.2014 - 20:00 Uhr

Hallo,
nach einigen weiteren Stunden des Rumprobierens und vie Lesens, zusammen mit Christians Tip, ist das vorerst die schönste Lösung die ich gefunden habe:

        $items = field_info_field('field_kategorie');
        $wrapper = entity_metadata_wrapper('node', $nid);
        $key = $wrapper->field_kategorie->value();
        $value = $items['settings']['allowed_values'][$key];

So muss man sich wenigstens nur einmal von Array zu Array hangeln. Der entitiy_metadata_wrapper steht einem zur Verfügung wenn man das Modul Entity installiert hat. Hier noch ein paar Links zu Seiten, die letztendlich zum Ergebnis geführt haben:
http://comm-press.de/de/blog/keine-angst-vor-entitymetadatawrapper
http://deeson-online.co.uk/labs/programatically-access-field-data-using-...

Ob das die empfohlene Lösung ist, weiß ich nicht, wie es mit multilinugual aussieht weiß ich auch nicht. Wenn jemand eine schönere Lösung weiß, nur her damit ;-)
Grüße
Frank

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, wenn Du nur an den

Eingetragen von oteno (775)
am 28.01.2014 - 20:46 Uhr

Hallo,
wenn Du nur an den Feldwert rankommen musst, geht auch:

$values = field_view_field('node', $node, 'field_kategorie');
$value = $values[0]['#markup'];

Gruß
Christian

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja, ich muss nur an den

Eingetragen von nezar (nicht überprüft) (0)
am 28.01.2014 - 21:01 Uhr

Ja, ich muss nur an den Feldwert rankommen, dass hatte ich heute mittag aber auch zweimal beschrieben.
Man, da hätte ich mir auch ne Menge Nerven in den letzten Stunden sparen können.
Na ja, wieder was dazu gelernt ;-)

Gruß
Frank

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Best Practices for Plain Text Notes
  • gepatchte PHP Version 7.4 für Windows
  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
Weiter

Neue Kommentare

  • Muss ja nicht genau php 8.3 sein
    vor 22 Stunden 21 Minuten
  • Guten morgen und Danke
    vor 1 Tag 4 Stunden
  • Evtl. versuchen auf PHP 8 zu wechseln
    vor 1 Tag 11 Stunden
  • Danke Schmittrich. Die Frage
    vor 3 Tagen 2 Stunden
  • Keine Antwort auf die Frage nach dem Woher
    vor 3 Tagen 5 Stunden
  • Danke ich werde mir die
    vor 6 Wochen 22 Stunden
  • Vielen Dank für Ihren
    vor 6 Wochen 3 Tagen
  • Composer ist sehr ratsam
    vor 6 Wochen 5 Tagen
  • Vielen Dank für den
    vor 7 Wochen 1 Tag
  • Die alten CMS Vergleiche von contentmanager.de
    vor 7 Wochen 1 Tag

Statistik

Beiträge im Forum: 250324
Registrierte User: 20571

Neue User:

  • alxshell
  • FesObsemo
  • AnthonyhoF

» Alle User anzeigen

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