Hallo Community,
ich habe bisher mit dem subscribe auf Widgets Listing einen weiteren Wert aus der Datenbank jedem Artikel in einem Listing zugewiesen. Das hat bis SW 5.3 auch super geklappt, sodass auch bei nachgeladenen Elementen der zusätzliche Wert im Template assigned und im Listing je Artikel genutzt werden konnte - also auch für die nachgeladenen Artikel beim infinite Scrolling.
Das hier hat bis 5.3 funktioniert:
$this->subscribeEvent(
'Enlight_Controller_Action_PostDispatchSecure_Widgets_Listing',
'addXY'
);
public function addXY(Enlight_Event_EventArgs $arguments)
{
$subject = $arguments->getSubject();
$view = $subject->View();
$sArticles = $view->getAssign('sArticles');
if(is_array($sArticles)) {
foreach ($sArticles as &$article) {
$sqlArticleId = $article['articleID'];
$sql = "SELECT xy FROM s_articles_details WHERE articleID = $sqlArticleId";
$fields = Shopware()->Db()->fetchOne($sql);
$article['xy'] = $fields;
}
unset($article);
}
$view->assign('sArticles', $sArticles);
}
Mit der Version 5.3 RC1 funktioniert das nun nicht mehr. Ich habe bisher herausgefunden, dass ich auf ein weiteres Event subscriben muss, bzw. auf die Action davon um auch für die nachgeladenen Elemente den neuen Wert zur Verfügung zu stellen. Folgender subscribe Funktioniert für alle nachgeladenen Objekte:
$this->subscribeEvent(
'Enlight_Controller_Action_Widgets_Listing_listingCount',
'addXY'
);
Leider komme ich aber nun mit obigem Code nicht mehr an die Elemente. Der zusätzliche Wert wird nicht assigned und ich kann mir auch nicht den view bzw. $sArticles ausgeben lassen. Folgender Code erzeugt einen Fehler in der Console: Uncaught TypeError: Cannot read property 'trim' of undefined
public function addXY(Enlight_Event_EventArgs $arguments)
{
$subject = $arguments->getSubject();
$view = $subject->View();
$sArticles = $view->getAssign('sArticles');
echo '<pre>Ausgabe:';
print_r($sArticles);
echo '</pre>';
die('');
}
Hat jemand eine Idee oder Rat?
// Edit: Mir ist auch aufgefallen, dass bei 5.3 keine Template Vars mehr ausgeben werden, nach dem im Infinite Scrolling des Listings die weiteren Artikel geladen wurden:
![image]()
![image]()