Eigene Helferklasse einbinden

Ja das mit dem OOP ist manchmal so eine Sache :slight_smile:

Ich habe 2 Controller eingebunden und möchte bestimmte Funktionen in eine Helferklasse auslagern, damit ich von der Bootstrap und den jeweiligen Controllern zugreifen kann.

Diese habe ich in /Components abgelegt und den Namespace im Bootstrap registriert mit

$this->Application()->Loader()->registerNamespace(
            'Shopware\Plugins\MDPlugin',
            $this->Path() . 'Components/'
        );

 

Die Helferklasse sieht als Beispiel vereinfacht wiefolgt aus

namespace Shopware\Plugins\MDPlugin\Components;


class MeinPluginExt
{


    public function meineMethode()
    {
        ...............

        
    }
}

Wie ruf ich diese Methoden im Controller auf bzw. was habe ich noch vergessen ?

Hallo,

löchen Sie Components von Ihre registerNamespace funktion

        $this->Application()->Loader()->registerNamespace(
            'Shopware\Plugins\MDPlugin',
            $this->Path()
        );

Viele Grüße,

Ahmad

 

Edit:

ich habe mir nochmal gedacht und ich galube das Problem in Ihrem Code ist Shopware\Plugins weil Shopware\Plugins namespaces ist regiestert mit Plugins Ordener.

also probiern mal löchen diese Plugin von Ihrem Namespace.

$this->Application()->Loader()->registerNamespace(
            'Shopware\MDPlugin',
            $this->Path()
        );

 

  

  Danke

@megadruck schrieb:

Aufruf im Controller dann über

$this-> thumb =Shopware\Plugins\MDPlugin\Components\PluginExt::getthumb($file);

 

?

genau aber ohne Plugins

thanks

Wie kann ich in der Helferklasse auf

 Shopware()-\>Request()-\>getParam(**"xy");**

Habe keinen Zugriff drauf

 

class Helper extends Zend_Controller_Request_Http
{
$data=$this->get("demo");
}

?

@megadruck schrieb:

thanks

Wie kann ich in der Helferklasse auf

Shopware()->Request()->getParam(„xy“);

Habe keinen Zugriff drauf

 

class Helper extends Zend_Controller_Request_Http
{
$data=$this->get(„demo“);
}

?

 Sie können Request() schicken von Ihre Controller zu Ihre HelferKlasse via __construct funktion in Ihre HelferKlasse

Ich habe einen anderen Weg gefunden wie es funktioniert.

Ich benenn die Class in mmeinem Fall zb

 class Shopware\_Plugins\_Frontend\_MDUpload\_Components\_UploadHelper

 

 

Dann brauche ich diese nur aufzurufen mit

$helper = new Shopware_Plugins_Frontend_MDUpload_Components_UploadHelper;

EIne letzte Frage habe ich zu " The provided X-CSRF-Token is invalid "

 

    public function preDispatch()
    {

        if( in_array($this->Request()->getActionName(),
            array( "getConfig","doDelete","doInsert" )) )
        {
            Shopware()->Plugins()->Controller()->ViewRenderer()->setNoRender();
        }


        $this->admin = Shopware()->Modules()->Admin();
        Shopware()->Session()->mdID = ($this->Request()->get("id"))? (int)$this->Request()->get("id"):Shopware()->Session()->get("mdID");

        if (!$this->admin->sCheckUser()) {
          return $this->redirect(
              array(
                  'controller' => 'account',
                  'action' => 'index',
                  'sTarget' => 'transfer',
                  'sTargetAction' => 'index'
                  )
          );
        }
    }

 

Der Kunde ruft auf

/transfer/index/id/123456/

und springt zum Login, wenn dieser nicht eingeloggt ist. Danach geht es weiter zu

/transfer/index/

Die id habe ich vorher in eine Session gespeichert und rufe diese ab.

 

Problem: Wenn die Session abläuft gibt es ein redirect zu, /account/ und nach dem Login

kommt die meldung " The provided X-CSRF-Token is invalid. Please go back, reload the page and try again "

 

Wie kann ich das vermeiden ?

 

Hallo,

Sie können Ihre controller zu whitelist hinzufügen

https://developers.shopware.com/developers-guide/csrf-protection/#whitelist-particular-actions

oder probieren mit 

https://developers.shopware.com/developers-guide/csrf-protection/#frontend

Viele Grüße,

Ahmad.

Soweit klappt jetzt alles. Danke für die Hilfe