Hallo, ich habe ein Plugin zur Generierung von Barcodes auf den Belegen programmiert. Wenn ich das Plugin in den Community-Store einstellen will, meckert das Code-Review bei der Übergabe der Werte an meine externe Barcode-Klasse. [quote]In den folgenden Dateien wurde die Superglobale $_GET gefunden 1. Frontend/ReihenBarcode/barcode.php Ersetzen Sie diese bspw. durch this-\>Request()-\>variable[/quote] Leider kann ich _Get nicht ersetzen, weil die Klasse nicht im Shopware-Scope ist. Bei $_Request wird auch gemeckert. So binde ich die Klasse ein und übergebe die Werte an meine Klasse: $barcode = ' ![](barcode.php?encode='.$config->encoding.'&bdata='.$art.'&height='.$config->height.'&scale='.$config->scale.'&font='.$font.')';
$barcode übergebe ich dann an das Document-Template. Es funktioniert ja alles, aber das Code-Review meckert. Was kann ich tun? Danke für die Hilfe Marco
Das interessiert mich auch. Da ich genau vor dem selben Problem stehe.
*PUSH* Niemand ne Lösung?
*PUSH*
Kannst du die Logik aus barcode.php nicht in einen Shopware-Controller übertragen? Dann könntest du dort den Shopware-Service-Layer verwenden und die übergebenen Parameter werden sauber validiert. Wenn du dabei Unterstützung brauchst, kannst du mir den Code an forum@shopware.de schicken - dann schaue ich mir das mal an.
Hallo Stefan, vielen Dank für das Angebot. :shopware: :thumbup: E-Mail ist raus. Vielen Dank. Gruß Marco
Erstmal vielen Dank für die Hilfe :shopware: :thumbup:. Folgendes wurde gemacht: Event erstellt $this-\>subscribeEvent( 'Enlight\_Controller\_Dispatcher\_ControllerPath\_Backend\_Barcode', 'onLoadBarcodeController' );
Und die passende Methode public function onLoadBarcodeController(){ return $this-\>Path()."/Controllers/Backend/Barcode.php"; }
Aufruf $link = Shopware()-\>Front()-\>Router()-\>assemble(array( 'module' =\> 'Backend', 'controller' =\> 'Barcode', 'action' =\> 'Render' )); $barcode = ' ![]('.$link.'?encode='.$config->encoding.'&bdata='.$art.'&height='.$config->height.'&scale='.$config->scale.'&font='.$font.')';
Controller (Pluginname/Controllers/Backend/Barcode.php) <?php class Shopware_Controllers_Backend_Barcode extends Enlight_Controller_Action
{
/**
* Disable template engine for all actions and enable JSON Render - spare index and load action
*
* @codeCoverageIgnore
* @return void
*/
public function preDispatch()
{
Shopware()->Plugins()-\>Controller()-\>ViewRenderer()-\>setNoRender(); } /\*\* \* Render Action for Barcode \* \* @return bool \*/ public function renderAction(){ require\_once(dirname(\_\_FILE\_\_)."/../../barcode.php"); $encode= $this-\>Request()-\>get('encode'); $bar= new BARCODE(); if($bar==false) die($bar-\>error()); $bar-\>setHeight($this-\>Request()-\>get('height')); if($this-\>Request()-\>get('font') != '') $bar-\>setFont($this-\>Request()-\>get('font'),true); $bar-\>setScale($this-\>Request()-\>get('scale')); $return = $bar-\>genBarCode($this-\>Request()-\>get('bdata'),$this-\>Request()-\>get('type'),$this-\>Request()-\>get('file')); if($return==false) $bar-\>error(true); } }
Ich hoffe das ist so verständlich. Gruß Marco