Gelöst Auf Object Variable zugreifen

Conny

Gut bekanntes Mitglied
7. September 2009
363
12
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

Moderator
Mitarbeiter
14. August 2015
1.801
127
Hallo,
an $oItem ist die Property "cArtNr" nicht direkt dran, sondern an "oArtikel". Sprich es muss wie folgt aussehen:
$oItem->getArtikel()->cArtNr
 

Conny

Gut bekanntes Mitglied
7. September 2009
363
12
Danke. Hat funktioniert.
Gibt es denn eine Logik wie man an diese Variablen kommt ?
 

Mirko.Schmidt

Moderator
Mitarbeiter
14. August 2015
1.801
127
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

Gut bekanntes Mitglied
7. September 2009
363
12
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

Gut bekanntes Mitglied
7. September 2009
363
12
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 Servicepartner
SPBanner
6. Juli 2011
4.510
697
Berlin
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 Servicepartner
SPBanner
6. September 2012
3.228
204
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

Gut bekanntes Mitglied
7. September 2009
363
12
Hi, vielen lieben Dank für Eure tolle Unterstützung.
Werde es morgen gleich mal probieren.
 

Conny

Gut bekanntes Mitglied
7. September 2009
363
12
Sorry für mein verspätes Feedback.
Es hat alles geklappt. Vielen lieben Dank nochmal Euch beiden.