Folgendes Problem: Ich übergebe in einer Url einen Parameter, den ich über ein Plugin Event auch abfangen kann. Da ich den Parameter aber in einem anderen Event verwenden muss, wollte ich den Parameter in einem Hidden Input Feld als Value hinterlegen. Wie mache ich das. $request->setParam(‚feldID‘,Wert); funktioniert nicht $view->feldID = Wert; funktioniert auch nicht. Bitte um Vorschläge Danke
Kann mir keiner helfen? Was ich rausgefunden habe ist, dass ich auf dem index.tpl an den parameter komme und diesen mit $view->sNameParameter = $parameter; auch ablegen kann. Leider ist der aber ausserhalb des Index.tpl wieder weg. Wo und wie kann ich nun das ablegen, dass es in einem input feld steht?
Das müsstest du etwas genauer erklären bzw. mehr Beispiel-Code aus deinem konkreten Plugin posten.
Danke Stefan, Also: [quote] $params = $request->getParam(‚meinPara‘); if($params == 21){ $view->sSiteParamFirst = $params; //Hier soll auf dem index.tpl der übergebene parameter in ein input feld abgelegt werden[/quote] Template hat folgendes Feld: [quote] {block name=‚frontend_detail_buy_quantity‘ prepend}{/block}[/quote] Mein Problem ist eigentlich, dass ich an den über die URL übergebenen FremdParameter nicht überall in meinem Plugin rankomme. Deshalb hab ich mir als Lösung überlegt, den in ein hidden-Field abzulegen. Und da scheitere ich wieder. EDIT: Achja, was ich noch wissen wollte: für die Detail Seite wird ja erst die Funktion getArticleById ausgeführt um dann mit dem Article die einzelnen Felder zu befüllen. Nun kann man die Methode über einen Hook ja manipulieren und so z.B. die Formatierung des Preis ändern, wie im Tutorial: http://wiki.shopware.de/Beispiel-Plugin … k-Beispiel Die Frage von mir ist nun… Kann ich das Ganze so manipulieren, dass ich nur dann den Hook ausführe, wenn ein Parameter oder Cookie mitübergeben wurde
Speichere den Wert doch in der Session? Code-Beispiel [code]<?php /**
- Shopware Demoshop Plugin
- @link http://www.shopware.de
- @copyright Copyright © 2011, shopware AG
- @author Stefan Hamann
- @package Shopware
-
@subpackage Plugins
/
class Shopware_Plugins_Frontend_SwagTest_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{
/*- Install plugin method
-
@return bool
*/
public function install()
{
$this->subscribeEvent(‘Enlight_Controller_Action_PostDispatch_Frontend_Detail’,‘onPostDispatchFrontendDetail’); $this->subscribeEvent(‘Event2’,‘onPostDispatchCustomEvent’); return true; } public function onPostDispatchFrontendDetail(Enlight_Event_EventArgs $args){ $request = $args->getSubject()->Request(); $response = $args->getSubject()->Response(); // Load this code only in frontend if(!$request->isDispatched()||$response->isException()||$request->getModuleName()!=‘frontend’) { return; } // Wenn Parameter “parameter” gesetzt ist, in Session zwischenspeichern $param = $request->getParam(“parameter”); if (!empty($param)){ $this->Application()->Session()->parameter = $param; } } public function onPostDispatchCustomEvent(Enlight_Event_EventArgs $args){ $request = $args->getSubject()->Request(); $response = $args->getSubject()->Response(); if(!$request->isDispatched()||$response->isException()||$request->getModuleName()!=‘frontend’) { return; } // Parameter wieder aus Session auslesen if (!empty($this->Application()->Session()->parameter)){ $param = $this->Application()->Session()->parameter; } } }[/code]
Kann ich dann wie ich oben im Edit geschrieben habe auch bestimmte Hooks nur dann ausführen lassen, wenn die Session den Wert als gesetzt hat?
Ja, kannst du.
mit $this->Application()->Session()->parameter gehts nicht mit Shopware()->Application()->Session()->parameter schmeisst er auch folgenden Fehler: [quote] Die nachfolgenden Hinweise sollten Ihnen weiterhelfen. Method „Shopware::Application“ not found failure in Shopware/Plugins/Local/Frontend/meinPlugin/Bootstrap.php on line 28 Stack trace: #0 Shopware/Plugins/Local/Frontend/meinPlugin/Bootstrap.php(28): Enlight_Application->__call(‚Application‘, Array) #1 Shopware/Plugins/Local/Frontend/meinPlugin/Bootstrap.php(28): Shopware->Application() #2 Enlight/Event/Handler/Plugin.php(149): Shopware_Plugins_Frontend_meinPlugin_Bootstrap::onArticleTwo(Object(Enlight_Hook_HookArgs))[/quote] EDIT: Zugriff auf die Session muss über [quote]Shopware()->Session()->parameter[/quote] erfolgen