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

  • 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
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 17 Stunden
  • Hey danke
    vor 2 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 2 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 6 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 4 Tagen
  • In der entsprechenden View
    vor 3 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 4 Tagen
  • gelöst
    vor 6 Wochen 14 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 1 Tag

Statistik

Beiträge im Forum: 250233
Registrierte User: 20452

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

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