Jump to content

Photo
- - - - -

Weitere Produktinformationen über eigenes Modul

Modul Controller Product

Best Answer Marcus Gesing , 07 May 2023 - 08:56

"An die Razor Views wird das Object "ProductDetailsModel" übergeben und hier müssten weitere Variablen hinzugefügt werden."
Die View-Models leiten von ModelBase ab, welches CustomProperties bereitstellt: "Use this property to store any custom value for your models."
Go to the full post


  • Please log in to reply
5 replies to this topic

#1 TobiasF

TobiasF

    Newbie

  • Members
  • Pip
  • 7 posts

Posted 05 May 2023 - 08:56

Hallo zusammen,

 

um keine Änderungen am Core vorzunehmen, würden wir unseren SmartStore gerne über ein Modul erweitern.

Das Modul soll weitere Produktinformationen aus einer eigenen Datenbank Tabelle ermöglichen und natürlich ohne die Klasse Product zu verändern.

 

Da es sich bei der Klasse ProductDetailsModel um eine partielle Klasse handelt, wäre es möglich diese zu erweitern. Leider lässt sich eine partielle Klasse nur im selben Assembly erweitern und somit für uns nicht möglich.

 

Eine weitere Möglichkeit wäre die Implementierung eines eigenen Controllers, doch wie können wir den Controller so integrieren, dass der Controller beim Abruf des Produkts angesprochen wird und die Daten übergibt?

 

Oder gibt es eine andere Möglichkeit, um weitere Produktinformationen zu ermöglichen?

 

Danke!

 

Viele Grüße,

TobiasF



#2 daniel@streetec

daniel@streetec

    Member

  • Members
  • PipPip
  • 12 posts

Posted 05 May 2023 - 13:35

Hi,

Ihr braucht ein eigenes Modul, dieses Modul braucht dann das Interface IActivatableWidget.

Dann braucht Ihr eine SmartViewComponent, die Ihr bsp in productdetails_bottom anzeigen lassen könnt. (Stichwort InvokeAsync)

 

Das ist eigentlich ganz schön hier beschrieben: https://smartstore.g...-viewcomponents



#3 TobiasF

TobiasF

    Newbie

  • Members
  • Pip
  • 7 posts

Posted 05 May 2023 - 14:45

Hi daniel@streetec,

 

danke für die Rückmeldung!

 

Wir würden das ungern über ein Widget lösen, da die Daten sonst nur im Widget zur Verfügung stehen, aber nicht im gesamten View.

 

Einen View haben wir über unser Modul bereits erfolgreich eingebunden. Nun geht es darum, die Daten für unsere Verwendung anzupassen.

An die Razor Views wird das Object "ProductDetailsModel" übergeben und hier müssten weitere Variablen hinzugefügt werden.

 

Oder es gibt eine andere Möglichkeit einen zusätzlichen Controller anzusprechen?

Die Daten müssten aber so abgerufen werden, dass sie im View zur Verfügung stehen.

 

Viele Grüße,

TobiasF 



#4 Algorithman

Algorithman

    Advanced Member

  • Members
  • PipPipPip
  • 39 posts

Posted 06 May 2023 - 23:08

Hallo Tobias,

 

das selbe Problem hatte ich auch.

Meine Lösung (bis jetzt) ist, dass ich mir ein erweitertes Model für die Produkte gemacht habe (abgeleitete Klasse mit zusätzlichen Properties). Dann mappe ich die Daten im entsprechenden IAsyncActionFilter auf meine Klasse, füge meine Daten hinzu und übergebe das an den View, der dann meine Klasse haben will.

 

Funktioniert aber leider nicht überall, AJAX-Calls im Warenkorb z.B. kann man so nicht abfangen, da muss der View noch 2x gerendert werden (einmal eben mit den Original-Daten und einmal mit meinen Zusatzdaten).

 

MfG

 

Chris


  • TobiasF likes this

#5 Marcus Gesing

Marcus Gesing

    SmartStore AG

  • Administrators
  • 3823 posts

Posted 07 May 2023 - 08:56   Best Answer

"An die Razor Views wird das Object "ProductDetailsModel" übergeben und hier müssten weitere Variablen hinzugefügt werden."
Die View-Models leiten von ModelBase ab, welches CustomProperties bereitstellt: "Use this property to store any custom value for your models."

  • TobiasF likes this

Marcus Gesing

Smartstore AG


#6 TobiasF

TobiasF

    Newbie

  • Members
  • Pip
  • 7 posts

Posted 08 May 2023 - 06:50

 

"An die Razor Views wird das Object "ProductDetailsModel" übergeben und hier müssten weitere Variablen hinzugefügt werden."
Die View-Models leiten von ModelBase ab, welches CustomProperties bereitstellt: "Use this property to store any custom value for your models."

 

 

Danke für die Lösung!  :8ball: