ottscho
Goto Top

Wert übergeben

Hey,

ich ich will einen Wert von einer Function in eine Andere übergeben.
Leider bekomme ich es nicht hin. Ich checkts auch nicht so wirklich ;)
In der unteren Funktion würde ich gerne auf die Werte von $view ($view = $args->getSubject()->View();) aus der oberen Funktion zugreifen.

Bootstrap.php
<?php
class Shopware_Plugins_Frontend_PDFCreator_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{
	public function install()
	{		
		$event = $this->createEvent(
	 		'Enlight_Controller_Action_PostDispatch',  
	 		'onPostDispatch'  
	 	);
		$this->subscribeEvent($event);		
		$event = $this->createEvent(
			'Enlight_Controller_Dispatcher_ControllerPath_Frontend_PDFCreator',  
			'onGetControllerPath');  
		$this->subscribeEvent($event);
				
		return true;
	}

	public static function onPostDispatch(Enlight_Event_EventArgs $args)
	{
		$request = $args->getSubject()->Request();
		$response = $args->getSubject()->Response();
				
		if(!$request->isDispatched()||$response->isException()||$request->getModuleName()!='frontend'){  

		return;

		}
		
		$view = $args->getSubject()->View();


		$config = Shopware()->Plugins()->Frontend()->PDFCreator()->Config();
		$view->PDFCreator = $config;
		$view->addTemplateDir(dirname(__FILE__).'/templates/');  
		$view->extendsTemplate('frontend/plugins/PDFCreator/index.tpl');  
	}

	public static function onGetControllerPath(Enlight_Event_EventArgs $args)

	{
		return dirname(__FILE__) . '/PDFCreator.php';  
	}

    }

}

PDFCreator.php
<?php
class Shopware_Controllers_Frontend_PDFCreator extends Enlight_Controller_Action
	{
				
		public function indexAction()
			{
					
				//Hier will ich auf die Werte der Variable  $view ($view = $args->getSubject()->View();) aus der oberen Funktion zugreifen.
				$this->View()->loadTemplate(dirname(__FILE__).'/templates/frontend/plugins/PDFCreator/test.tpl');  

			}
	}

?>

Ich hoffe ihr könnt mir weiterhelfen.

Danke

Content-Key: 160361

Url: https://administrator.de/contentid/160361

Printed on: April 25, 2024 at 15:04 o'clock

Member: maretz
maretz Feb 08, 2011 at 10:15:36 (UTC)
Goto Top
Moin,

du kannst entweder die Variable in eine Session packen oder im POST/GET-Bereich übergeben. Es gibt noch eine Option der "globalen Variablen" - aber das willst du nicht weil $Böse, $GARNICHT_GUT!, $GANZSCHLECHT und $BÜCHSE_DER_PANDORRA dann alle auf true stehen ;)
Member: ottscho
ottscho Feb 08, 2011 at 10:24:37 (UTC)
Goto Top
POST/GET Bereich habe ich mir auch überlegt.
Aber in der Function wo ich /PDFCreator.php aufrufe, habe ich ja leider meine Varibale schon nicht mehr zur Verfügung :/
Member: SlainteMhath
SlainteMhath Feb 08, 2011 at 11:09:25 (UTC)
Goto Top
Moin,

also grundsätzlich sind das erstmal nur definitiponen von 2 klassen. Wie werden die denn im Seiten-.code beniutzt? Werden die auf der gleichen Seite inkludiert? oder wie? face-smile

/EDIT:
Function wo ich /PDFCreator.php aufrufe, habe ich ja leider meine Varibale schon nicht mehr zur Verfügung :/
Ja das liegt aber auch daran, das sich $this immer auf die aktuelle instanz der KLasse bezieht, und es siche bei deiner Frage schon um 2 verschiedene Klassen handelt.

@maretz:
Globale variablen (globals) sind nicht böse, register_globals hingegen schon - hat aber beides eigentlch nichts mit der Frag evon ottscho zu tun face-smile

lg,
Slainte
Member: ottscho
ottscho Feb 08, 2011 at 11:55:28 (UTC)
Goto Top
Ich habe es nun hinbekommen, aber ich weiß nicht ob das der "perfekte" Weg ist.

Zuerst wird dies $view->extendsTemplate('frontend/plugins/PDFCreator/index.tpl'); angezeigt.
Hier klicke ich auf einen Link, welcher mit meinen Controller (PDFCreator.php)öffnet.

Nun habe ich hinten den Link einfach per GET meine Varibale angehängt.

Funktionieren tut es bestens. Ich weiß eben nur nicht ob es die feine Art ist.

@slaintmhath
Dieser Teil public static function onPostDispatch(Enlight_Event_EventArgs $args) {} wirdm auf der aktuellen Seite ausgeführt und hängt an das Layout einen Button/Link im Content an.
Der Button/Link verweist auf den Controller public static function onGetControllerPath(Enlight_Event_EventArgs $args) {}.
Dieser gibt dann den Code von der PDFCreator.php aus.
Member: Haddr1
Haddr1 Mar 01, 2011 at 13:50:45 (UTC)
Goto Top
poste bitte den Code von der "Shopware_Components_Plugin_Bootstrap" Klasse
und
poste bitte den Code von der "Enlight_Controller_Action" Klasse

sonst ist man teils Blind im Code.