Gelöst Auf Object Variable zugreifen

  • Ersteller des Themas Ersteller des Themas Conny
  • Erstellungsdatum Erstellungsdatum

Conny

Sehr aktives Mitglied
7. September 2009
571
61
Hi,
ich bekomme es irgendwie nicht hin.
Ich will eine Object Variable ausgeben - und zwar die Artikel Nr. (cArtNr)

Wenn ich die Variable $oItem mit ($oItem|@print_r) ausgebe, bekomme ich folgendes

PHP:
Konfigitem Object ( [kKonfigitem:protected] => 35 [kArtikel:protected] => 1069 [nPosTyp:protected] => 0 [kKonfiggruppe:protected] => 9 [bSelektiert:protected] => 0 [bEmpfohlen:protected] => 0 [bPreis:protected] => 1 [bName:protected] => 1 [bRabatt:protected] => 0 [bZuschlag:protected] => 0 [bIgnoreMultiplier:protected] => 0 [fMin:protected] => 1 [fMax:protected] => 1 [fInitial:protected] => 1 [oSprache:protected] => Konfigitemsprache Object ( [kKonfigitem:protected] => [kSprache:protected] => [cName:protected] => [cBeschreibung:protected] => ) [oPreis:protected] => Konfigitempreis Object ( [kKonfigitem:protected] => 35 [kKundengruppe:protected] => 1 [kSteuerklasse:protected] => 1 [fPreis:protected] => 0 [nTyp:protected] => 0 ) [oArtikel:protected] => Artikel Object ( [kArtikel] => 1069 [kHersteller] => 0 [kLieferstatus] => 0 [kSteuerklasse] => 1 [kEinheit] => 1 [kVersandklasse] => 1 [kStueckliste] => 0 [kMassEinheit] => 0 [kGrundpreisEinheit] => 0 [kWarengruppe] => 0 [nLiefertageWennAusverkauft] => 0 [nAutomatischeLiefertageberechnung] => 0 [nBearbeitungszeit] => 0 [fLagerbestand] => -5 [fMindestbestellmenge] => 0 [fPackeinheit] => 1.0000 [fAbnahmeintervall] => 0 [fGewicht] => 0 [fUVP] => 0.00 [fUVPBrutto] => 0.00 [fVPEWert] => 0.0000 [fZulauf] => 0 [fMassMenge] => 0 [fGrundpreisMenge] => 0 [fBreite] => 0 [fHoehe] => 0 [fLaenge] => 0 [cName] => Edelstahl; 2-gliedrig, perlgestrahlt; TEGIMENT-Technologie [cSeo] => Edelstahl-2-gliedrig-perlgestrahlt-TEGIMENT-Technologie [cBeschreibung] =>

Edelstahl; 2-gliedrig, perlgestrahlt; TEGIMENT-Technologie
[cAnmerkung] => [cArtNr] => a103 [cURL] => Edelstahl-2-gliedrig-perlgestrahlt-TEGIMENT-Technologie [cURLFull] => https://testshop.classic-watch.de/Edelstahl-2-gliedrig-perlgestrahlt-TEGIMENT-Technologie [cVPE] => N [cVPEEinheit] => [cSuchbegriffe] => [cTeilbar] => N [cBarcode] => [cLagerBeachten] => N [cLagerKleinerNull] => N [cLagerVariation] => N [cKurzBeschreibung] => [cMwstVersandText] => inkl. 19% USt., zzgl. Versand [cLieferstatus] => [cVorschaubild] => media/image/product/1069/sm/edelstahl-2-gliedrig-perlgestrahlt-tegiment-technologie.jpg [cHerstellerMetaTitle] => [cHerstellerMetaKeywords] => [cHerstellerMetaDescription] => [cHerstellerBeschreibung] => [dZulaufDatum] => 0000-00-00 [dMHD] => 0000-00-00 [dErscheinungsdatum] => 0000-00-00 [cTopArtikel] => N .........

Ich wollte jetzt die cArtNr ausgeben
$oItem->cArtNr klappt aber leider nicht.

Was mach ich da falsch ?
 
Zuletzt bearbeitet:

Mirko.Schmidt User deaktiviert

Guest
Hallo,
an $oItem ist die Property "cArtNr" nicht direkt dran, sondern an "oArtikel". Sprich es muss wie folgt aussehen:
$oItem->getArtikel()->cArtNr
 
  • Gefällt mir
Reaktionen: moh

Conny

Sehr aktives Mitglied
7. September 2009
571
61
Danke. Hat funktioniert.
Gibt es denn eine Logik wie man an diese Variablen kommt ?
 

Mirko.Schmidt User deaktiviert

Guest
Am Anfang steht der Klassenname des Objects, in dieser Klasse können dann alle Variablen angesehen werden und deren Methoden. Protected Variablen können nicht direkt aufgerufen werden, sondern können nur über dafür angelegte public Methoden.
 

Conny

Sehr aktives Mitglied
7. September 2009
571
61
Hi @Mirko.Schmidt

es wäre schön wenn du mir nochmal helfen könntest.
Ich versuche auf die Artikelmerkmale zu zugreifen welche mehrsprachig sind (ger/engl).

z.B. will ich im Template abfragen:
wenn Sonstiges -> Limitierte Serie gesetzt ist, dann gebe mir den entsprechenden Wert aus
PHP:
{if !empty($Artikel->cMerkmalAssoc_arr.Sonstiges.Limiterte_Serie)}
                    <p>{$Artikel->cMerkmalAssoc_arr.Limiterte_Serie.Wert}</p>
{/if}
b6.png
 
Zuletzt bearbeitet:

Conny

Sehr aktives Mitglied
7. September 2009
571
61
Ich versuche es mal anders zu erklären

Ich möchte explizit abfragen, ob ein Merkmal beim Artikel gesetzt ist oder nicht

b1.png

z.B. habe ich in der Merkmal "Kategorie" Sonstiges verschiedene Merkmale
Sonstiges -> Limitierte Serie
Sonstiges -> Weltzeituhr

Ich will z.B. wenn das Merkmal "Sonstiges->Limitierte Serie" vorhanden ist eine Info anzeigen
Wenn "Sonstiges->Weltzeituhr" vorhanden ist einen weiteren Text anzeigen
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.648
2.700
Berlin
Firma
css-umsetzung
Du kannst die Merkmale im Template nicht direkt abrufen. Wenn du dir die Struktur anschaust wirst du es vermutlich verstehen:
Du müsstest theoretisch zwei schleifen bauen, einmal die Merkmale selbst und wenn du das gewünschte gefunden hast dann den Wert den du suchst.

1564397538076.png

kleines Beispiel ohne Garantie auf Funktionalität, die Beschreibung der Werte gebe ich als Text aus:

Code:
{foreach from=$Artikel->oMerkmale_arr key=mKey item=mItem name=merkmale}
    {if $mItem->cName=='Sonstiges'}
        {foreach from=$mItem->oMerkmalWert_arr item=mwItem name=merkmalwert}
            {if $mwItem->kMerkmalWert=='Limitierte Serie' || $mwItem->kMerkmalWert=='Weltzeituhr' }
            {$mwItem->cBeschreibung}
            {/if}
        {/foreach}
        {break}
    {/if}
{/foreach}
 

martinwolf

Offizieller Service Partner
SPBanner
6. September 2012
3.716
355
kMerkmalWert ist eine ID, kein String, daher hier die Korrektur von css-umsetzung:
Code:
{foreach from=$Artikel->oMerkmale_arr key=mKey item=mItem name=merkmale}
    {if $mItem->cName=='Sonstiges'}
        {foreach from=$mItem->oMerkmalWert_arr item=mwItem name=merkmalwert}
            {if $mwItem->cWert=='Limitierte Serie' || $mwItem->cWert=='Weltzeituhr' }
            {$mwItem->cBeschreibung}
            {/if}
        {/foreach}
        {break}
    {/if}
{/foreach}
 
  • Gefällt mir
Reaktionen: css-umsetzung

Conny

Sehr aktives Mitglied
7. September 2009
571
61
Hi, vielen lieben Dank für Eure tolle Unterstützung.
Werde es morgen gleich mal probieren.
 

Conny

Sehr aktives Mitglied
7. September 2009
571
61
Sorry für mein verspätes Feedback.
Es hat alles geklappt. Vielen lieben Dank nochmal Euch beiden.
 

Ähnliche Themen