Hallo liebe shopware - Gemeinde,
gibt es irgendeine Funktion, die vor dem Aufruf der Bearbeitungsmaske des Artikels aufgerufen wird (also nach dem Klick auf “Bearbeiten” / Bleistift-Icon), an die man sich beispielsweise per Hook dranhängen könnte? Gleiches gilt bei der Variante (Bleistift-Icon).
Es geht darum, ein Eingabefeld zu “synchronisieren”, wenn sich ein Wert bei einem anderen Menüpunkt geändert hat.
Ich hoffe, jemand kann mir da helfen oder einen Tipp geben.
Beste Grüße
Sebastian
Hi,
das Bleistift Icon in der Artikelübersicht ruft letztlich ja die Aritcle Subapplication auf, das ist die init Methode des mainControllers in ExtJs interessant. Auf der PHP Seite wäre das dann am ehesten die indexAction des Article Backend Controllers. Kommt also echt auf den konkreten Fall an. Echt nützlich ist auch das loadStores event, da werden die ganzen Artikeldaten geladen über den ExtJs batch store.
Bei der Variante habe ich das gerade nicht so im Kopf, am besten eben in die Dev Tools schauen, ob es da noch einen AjaxRequest gibt.
Daniel
Hallo Daniel,
danke für deine Antwort.
Du meinst also in der Form:
$this->subscribeEvent(
'Enlight_Controller_Action_PostDispatch_Backend_Article',
'postDispatchBackendArticle'
);
public function postDispatchBackendArticle(Enlight_Event_EventArgs $args){
$controller = $args->getSubject();
$request = $controller->Request();
$view = $controller->View();
if ($request->getActionName() === 'loadStores') {
/* Eingabefeld synchronisieren */
}
}
Wie komm ich am besten an die Artikel-ID des Artikels? Irgendwie über: $assign = $view->getAssign(); $articleData = $assign[‘data’]; ?
Beste Grüße
Sebastian
Hi,
die ID bekommst du als Parameter rein:
$id = $this->Request()->getParam('articleId');
Deine Variante müsste theoretisch auch gehen, meine finde ich aber etwas eleganter. Insgesamt weiß ich noch nicht ganz sicher, was exakt du erreichen möchtest. Wenn du jetzt im Artikelmodul bestimmte Felder aktualisieren willst etc, willst du dich vll. eher auf das ExtJS-Store-Event hängen: Shopware.apps.Article.controller.Main.onBatchStoreLoaded, das findest du in themes/Backend/ExtJs/backend/article/controller/main.js.
Daniel
Hallo Daniel,
ich danke dir für die Antwort. Deine Lösung ist durchaus eleganter, da hast du natürlich recht.
Ich habe nun mein Problem lösen können - ich habe doch einen anderen Weg eingeschlagen, indem ich bei der Listenansicht des anderen Menüpunktes mir eine Schaltfläche erstellt habe, die per Batch Process bei den ausgewählten Elementen das Eingabefeld „synchronisiert“.
Das Thema ist also gelöst - wie setze ich das Thema denn jetzt auf gelöst, ich kann den ersten Beitrag ja nicht mehr editieren?
Beste Grüße
Sebastian
Hi,
habe das Thema zu einer “Frage” gemacht - dann kannst du auch eine Antwort markieren. Gibt zwei unterschiedliche Beitragstypen, wir haben das jetzt aber schon so geändert, dass “Frage” in Zukunft der Standard ist.
Schönen Gruß,
Daniel