Hey, ich erstelle in einem Plugin zwei Events: $event = $this-\>createEvent( 'Enlight\_Controller\_Action\_PostDispatch', 'onPostDispatch' ); $this-\>subscribeEvent($event); $event = $this-\>createEvent( 'Enlight\_Controller\_Dispatcher\_ControllerPath\_Frontend\_PDFCreator', 'onGetControllerPath'); $this-\>subscribeEvent($event);
Nun geht es mir um das Template laden. Beim ersten geht das ganz einfach über: $view = $args-\>getSubject()-\>View(); $view-\>addTemplateDir(dirname(\_\_FILE\_\_).'/templates/'); $view-\>extendsTemplate('frontend/plugins/MEINS/index.tpl');
Aber wie mache ich das beim Zweiten? (Controller). Hier habe ich keine $args und kann es deshalb nicht ausführen. Wahrscheinlich habe ich es einfach immer noch nicht verstanden Ich blicks einfach nicht. Schau ich mir die Smarty Doku an, so machen die es mi $smarty = New smarty; $smarty-\>display('test.tpl')
Aber der Code steckt ja eig. in der Funktion View(). Soviel hab ich schon gelernt. (Gibt es eig. einen guten Editor bzw. Entwicklungsumgebung (kostenlos), welche mir die Varibalen, welche ich zur Verfügung habe anzeigt? Über den Notepad++ kann ich ja nur die einzelnen Dateien öffnen und sehe dann nicht, was ich alles in der Klasse zur Verfügung habe. Vererbung etc.) Danke
Ich bitte hier noch mal um etwas Unterstützung. Ich checks einfach nicht
$event = $this-\>createEvent( 'Enlight\_Controller\_Dispatcher\_ControllerPath\_Frontend\_PDFCreator', 'onGetControllerPath'); $this-\>subscribeEvent($event);
public static function onGetControllerPath(Enlight\_Event\_EventArgs $args) { return dirname(\_\_FILE\_\_).'/Controller.php'; }
Datei Controller.php <?php class Shopware_Controllers_Frontend_PDFCreator extends Enlight_Controller_Action
{
public function indexAction(){
$this->View()-\>a = "B"; $this-\>View()-\>setTemplate(dirname(\_\_FILE\_\_)."/index.tpl"); } }
Datei index.tpl Hallo {$a}
Aufruf: www.deinshop.de/PDFCreator
Vielen Dank
Noch eine Frage. In der Bootstrap.php unter der folgenden Funktion kann ich ja auf $view->sArticle zugreifen. public static function onPostDispatch(Enlight\_Event\_EventArgs $args) { $request = $args-\>getSubject()-\>Request(); $response = $args-\>getSubject()-\>Response(); $view = $args-\>getSubject()-\>View(); print\_r($view-\>sArticle); exit; }
Wie bekomme ich die Werte der Varibale rüber in meinen Controller? public static function onGetControllerPath(Enlight\_Event\_EventArgs $args) { return dirname(\_\_FILE\_\_) . '/PDFCreator.php'; }
<?php class Shopware_Controllers_Frontend_PDFCreator extends Enlight_Controller_Action
{
public function indexAction()
{
//Hier her?
}
}
?>
Hey, ich habe nun eine Lösung gefunden, aber ich weiß nicht ob die richtig ist. Funktionieren tut es auf jeden Fall. Und zwar über GET. Ich gebe beim Öffnen des Controller über GET die ID des Artikels mit: [PDF erstellen]({url module=frontend controller=PDFCreator action=index}?id={$sArticle.articleID} "PDF erstellen")
Und frage diese dann wiederum im Controller ab: [code]<?php class Shopware_Controllers_Frontend_PDFCreator extends Enlight_Controller_Action
{
public function indexAction()
{
$id = $_GET['id'];
$article = Shopware()->Modules()-\>Articles()-\>sGetArticleById($id); } } ?\> [/code] Geht es auch einfacher, oder ist das der korrekte Weg? Danke
Das ist der korrekte Weg! Statt: $id = $\_GET['id'];
Bitte: $id = intval($this-\>Request()-\>id);
verwenden!
Danke dir. So langsam werde ich etwas besser Übung macht den Meister *lach*