Smarty: not allowed by security setting (konkreter Fall)

Hallo zusammen,

ich bekomme aktuell bei einem Plugin noch folgenden Fehler (obwohl das Template-Verzeichnis ganz oben registriert wird):

directory '/var/www/xyz/engine/Shopware/Plugins/Community/Frontend/xyz/Views/frontend/listing/product-box/product-actions.tpl' not allowed by security setting
2018-12-07T09:21:00.908658+0100
core
{
    "uri": "/widgets/listing/listingCount/sSupplier/169/sCategory/3?p=2&productBoxLayout=basic&c=3&o=1&n=36&loadProducts=1",
    "method": "GET",
    "query": {
        "p": "2",
        "productBoxLayout": "basic",
        "c": "3",
        "o": "1",
        "n": "36",
        "loadProducts": "1",
        "module": "widgets",
        "controller": "listing",
        "action": "listingCount",
        "sSupplier": "169",
        "sCategory": "3",
        "sPage": "2",
        "sPerPage": "36",
        "sSort": "1"
    },
    "post": []
}
No session data available
1
xyz.de

Hier die entscheidenden Zeilen aus dem Plugin:

    private function subscribeEvents()
    {
        $this->subscribeEvent(
            'Enlight_Controller_Action_PostDispatchSecure_Frontend',
            'onPostDispatch'
        );
		
		$this->subscribeEvent(
			'Enlight_Controller_Action_PostDispatchSecure_Widgets',
			'onPostDispatch'
        );	
    }

    public function onPostDispatch(Enlight_Controller_ActionEventArgs $args)
    {
        $config = $this->Config();

        $view = $args->getSubject()->View();
		$view->addTemplateDir($this->Path() . 'Views');
		
		$view->assign('xyz', $config->xyz);        
    }

Hat jemand vielleicht ein Tipp dazu?

Viele Grüße und Dank vorab,
Frank

Hast das hiergesehen ?

 

@Haraldio schrieb:

Hast das hiergesehen ?

 

Nein, bisher nicht, vielen Dank. Aber ich werde, ehrlich gesagt, nicht schlau daraus. :-( 

Bei mir steht dort folgendes drin:

{extends file="parent:frontend/listing/product-box/product-actions.tpl"}

 

Bin kein Profi - aber einer, der sich gern mal vertippt. Und soweit ich das verstehe, ist die Fehlermeldung mitunter irreführend, weil nicht die Berechtigung durch Smarty fehlt, sondern ein anderer Fehler auftritt - z.B. durch einen Tippfehler …

https://secure.php.net/manual/en/function.dirname.php#refsect1-function.dirname-returnvalues

$view->addTemplateDir($this->Path() . '/Views');

 

Das Template frühstmöglich registrieren heißt nicht, dass der Code dafür weit oben im Plugin steht. Du musst ein Event nutzen, das zeitlich früh gefeuert wird. PostDispatchSecure ist idR viel zu spät.

@puhas schrieb:

Das Template frühstmöglich registrieren heißt nicht, dass der Code dafür weit oben im Plugin steht. Du musst ein Event nutzen, das zeitlich früh gefeuert wird. PostDispatchSecure ist idR viel zu spät.

Hast mir ggf. ein Beispiel dafür? Aus der Dokumentation werde ich leider nicht schlau.

Das Template in einem eigenen frühreren registrieren Event?

@hhmarco73 schrieb:

https://secure.php.net/manual/en/function.dirname.php#refsect1-function.dirname-returnvalues

$view->addTemplateDir($this->Path() . ‚/Views‘);

 

Was genau meinst Du damit?

Grüße Frank

@webarbeit schrieb:

@puhas schrieb:

Das Template frühstmöglich registrieren heißt nicht, dass der Code dafür weit oben im Plugin steht. Du musst ein Event nutzen, das zeitlich früh gefeuert wird. PostDispatchSecure ist idR viel zu spät.

Hast mir ggf. ein Beispiel dafür? Aus der Dokumentation werde ich leider nicht schlau.

Das Template in einem eigenen frühreren registrieren Event?

Dieser Beitrag erklärt es sehr gut: https://forum.shopware.com/discussion/comment/209476/#Comment_209476

1 Like

Was genau meinst Du damit?

Der Slash fehlt bei Dir