Hallo. Ich probiere auch mal grad den Kickstarter (Version 0.3 vom 11.03.2011) unter 3.5.4 und habe folgendes Problem: Ich lege ein neues Projekt an (Communtity/Backend), schreibe wirklich nicht viel da rein und definiere noch einen Backend-Controller. Nach Codeerzeugung (“Coding”) nehme ich das Tag-Verzeichnis (Beispiel: “1”) und kopiere es auf dem selben Server in das entsprechende Verzeichnis (z.B.: “\engine\Shopware\Plugins\Community\Backend\1”). Wenn ich dann den Plugin-Manager aufrufen will, lädt der nicht, weil die Plugin-Bootstrap-Klasse angeblich schon definiert sei??? “Fatal error: Cannot redeclare class Shopware_Plugins_Backend_MyPlugin_Bootstrap in D:\xampp\htdocs\shopware\engine\Shopware\Plugins\Community\Backend\1\Bootstrap.php on line 42” Egal, wie ich den PluginKey auch nenne…ich kann den Plugin-Manager nicht starten!? Ich habe auch versucht, das Tag-Verzeichnis an den Zielort zu verschieben…ohne Erfolg. WAS mache ich falsch???
Gelöst. Ich bin davon ausgegangen, dass alle Pfade eines Plugins relativ zu dessen “root” angegeben werden. Dem ist aber wohl nicht so. Das Verzeichnis muss also genau so heißen, wie der PluginKey…Das wäre doch mal einen Hinweis im Tutorial wert, oder? Noch eine Anregung hätte ich: Im Backend-Controller-Menü den Parameter “Style” konfigurierbar machen. Dann kann man dort so etwas wie “background-position: 5px 5px;” hinterlegen…so muss ich den generierten Bootstrap-Code nacharbeiten - unschön. Und noch etwas (bug?) ist mir aufgefallen: Andere Plugins (selbst erstellt / ohne Kickstarter) haben in der Deinstallationsroutine selbständig etwaige Menüeinträge im Backend entfernt. Mit Kickstarter erstellte Plugins machen das nicht! Hier wird nach der Deinstallation ein Artefakt in “s_core_menu” hinterlassen. Auch in der “s_core_plugins” bleibt der Eintrag erhalten - allerdings wird der bei der nächsten Installation überschrieben und führt nicht zu einem Abbruch der Installation wie der Menüeintrag…Was mich insgesamt zu der Anregung veranlasst, den generierten Code etwas “fehlertoleranter” zu gestalten (á la “CreateIfNotExist” oder zumindest in einem try/catch-Block mit leerem catch). Ich “behelfe” mir vorerst mit SQL im “Setup/SQL-Uninstall:”-Bereich, würde mich aber freuen, wenn die eine oder andere Anregung Einzug hielte in der Final-Version (gibt’s da was neues zum Thema Release-Datum?) Danke Will
Hey, ich arbeite gerade an der Beta 2 - “irgendwann” im September wird das was und dann gibts einiges an neuen Features und natürlich Bugfixes…
Dann darf ich hier doch sicherlich noch die eine oder andere Anregung von mir geben - ist ja noch „früh genug“, oder? z.B.: Mehrere SQLs können durch Semikola getrennt werden…Wenn du (ihr) die zerlegten Strings [explode()] noch mit einem trim() verseht, dann kann der Anwender seine einzelnen SQLs Zeilenweise organisieren, ohne dass der generierte Code so „zerissen“ wird… Bsp.: aus DELETE FROM s\_core\_plugins WHERE name = 'MyPlugin'; ↲ DELETE FROM s\_core\_menu WHERE name = 'MyPlugin'
wird: Shopware()-\>Db()-\>query("DELETE FROM s\_core\_plugins WHERE name = 'MyPlugin'"); Shopware()-\>Db()-\>query(" DELETE FROM s\_core\_menu WHERE name = 'MyPlugin'");
Kein bug oder so…sieht einfach nur unschön aus :happy:
ein bug *grins*: Wenn ein SQL-Statement ein Semikolon beinhaltet, klappt das ganze natürlich nicht mehr…das explode() teilt das Statement mittendrin (es ist halt sehr gründlich :happy:): aus UPDATE s\_core\_menu SET style = 'background-position: 5px 5px;' WHERE name = 'MyPlugin'
wird Shopware()-\>Db()-\>query("UPDATE s\_core\_menu SET style = 'background-position: 5px 5px"); Shopware()-\>Db()-\>query("' WHERE name = 'MyPlugin'");
Ich hab allerdings auch grad keine Idee, was als Delimiter herhalten könnte…evtl. das Pipe-Symbol…eher unwahrscheinlich, dass DAS jemand als Teil eines Strings in die Datenbank einfügen/updaten will…oder? Wenn jemand richtig fit ist in Regulären Ausdrücken (ich bin es nicht) kann man da sicher auch mit preg_split() was machen (suchen nach “;” aber nicht INNERHALB von Hochkommatar-Paaren…)
Und noch 'ne Kleinigkeit: Im Codeviewer (Coding->Tag->*.php) fehlt die horizontale Scrollbar (merkt man wohl erst, wenn man lange Codezeilen generiert und/oder 'ne kleine Bildschirmauflösung fährt :happy:).
Frage: Welchen Effekt hat im Backend-Controller-Menu der “Action”-Parameter? Ganz egal, was ich da eintrage, es wird immer so etwas wie onclick = openAction('MyPluginController');
generiert?!
Was mir noch aufgefallen ist (ich mache so lange weiter, bis mir jemand sagt, dass ich nerve :D): Bei der generierten Controller-Klasse (gesehen beim Backend-Controller) fehlt: [list=1] [*] Das einleitende "<?php "-Tag
habe ich - glaube ich - hier irgendwo schon mal gelesen[/]
[] Der Funktionsrumpf der index- bzw. skeletonAction()
da muss sowas rein, wie $this->View()->loadTemplate(„index.tpl“); bzw. $this->View()->loadTemplate(„skeleton.tpl“);[/*][/list]
Hey, vielen Dank für die ganzen Anregungen - ich werde das dann mal Step by Step abarbeiten Wegen der Action - du übergibst dort als ersten Parameter einfach nur den Namen des Controllers, da wird dann ja automatisch die skeletonAction aufgerufen, die die Properties des Fensters lädt - im Skeleton wird dann die Action definiert, die im Fenster angezeigt werden soll…
Hallo. Zu dem “übrig gebliebenen” Menüeintrag: In der Bootstrap::uninstall() fehlt lediglich das “parent::uninstall();” - aber das weißt du sicher schon. Und zu der Action: Wenn ich also “einfach nur” den Controller aufrufen will (mit der Form-Erstellung im weiteren Verlauf) trage ich dort den Namen des Controllers ein. Wenn ich aber hinter einem Menüpunkt keine Form aufmachen möchten sondern einfach nur eine Aktion ausführen möchte (ich glaube, der Ottscho hatte schon mal so eine Anfrage), dann trage ich dort den Namen einer Action ein (Beispiel: “tuWas”) und in dem Controller definiere ich dann diese Action als Methode (“public function tuWasAction()”) die dann einfach kein redirect auf “index” macht…richtig???
hi, ein geiles tool danke für die mühe. mir klebt aber das hook-pech wie schei*** an den füßen. jetzt stoß ich auf das tool und dachte alles wird gut :oops: also ran an den hooks und siehe da nix missing ) in parenthetical http://shopware/engine/vendor/ext/ext-all-debug.js Line 11528
**Fatal error** : Interface 'PHPUnit\_Framework\_TestListener' not found in **C:\xampp\htdocs\shopware\engine\Shopware\Components\Test\MailListener.php** on line **12**
wollte mal wieder nachfragen, ob sich beim Kickstarter schon was getan hat, und ich was verpasst habe? Gruss René
Hallo Shopware, Es ist offenbar etwas still geworden um diese Sache - wie geht es weiter mit diesem eigentlich doch tollen Tool? Oder wollt Ihr vielleicht aufgrund vieler Änderungen in SW 4.0 erst zum Release bzw. nach Release damit weitermachen? Grüße rattatui
(schieb…) :shopware: sagt doch mal was Grüße rattatui
[quote]
**Fatal error** : Interface 'PHPUnit\_Framework\_TestListener' not found in **C:\xampp\htdocs\shopware\engine\Shopware\Components\Test\MailListener.php** on line **12**
[/quote] Bei mir auch. Wieso wird das nicht weiter entwickelt? Ist doch fast fertig gewesen…
Ja die Idee ist grundsätzlich super und sollte auch für die 4 er Version angedacht werden. Dieses Plugin spart nicht nur Zeit es ist auch noch komfortabel. Hoffentlich stirbt es nicht in der Versenkung