Die Antwort auf Ihre Frage lautet definitiv nein, es gibt kein customer_logged_inHandle mehr, ich habe mich in den Code vertieft und konnte kein Layout-Handle finden, das den Trick machen könnte.
Darüber hinaus \dev\tests\static\testsuite\Magento\Test\Legacy\LayoutTest.phpfinden Sie unter folgenden Code:
/**
* List of obsolete nodes
*
* @var array
*/protected $_obsoleteNodes =['PRODUCT_TYPE_simple','PRODUCT_TYPE_configurable','PRODUCT_TYPE_grouped','PRODUCT_TYPE_bundle','PRODUCT_TYPE_virtual','PRODUCT_TYPE_downloadable','PRODUCT_TYPE_giftcard','catalog_category_default','catalog_category_layered','catalog_category_layered_nochildren','customer_logged_in','customer_logged_out','customer_logged_in_psc_handle','customer_logged_out_psc_handle','cms_page','sku_failed_products_handle','catalog_product_send','reference',];
Was mir klar sagt, dass das customer_logged_inLayout-Handle jetzt veraltet ist.
In Fabians Antwort finden Sie Erklärungen dazu, wie es jetzt in Magento 2 gemacht wird.
Diese Ereignisse werden ausgelöst, wenn sich der Kunde anmeldet und wenn er sich abmeldet , nicht bei jeder Anfrage.
Fabian Schmengler
8
Wenn immer noch jemand damit zu kämpfen hat, habe ich ein schnelles Modul geschrieben, das die Layout-Handles customer_logged_in und customer_logged_out hinzufügt, die Sie wie in Magento 1 verwenden können
Wie andere betont haben, sind diese Griffe jetzt weg. Wenn Sie sich das Magento_Customer-Modul ansehen, werden Sie feststellen, dass Blöcke wie der Registrierungslink immer hinzugefügt, aber nicht gerendert werden, wenn der Kunde angemeldet ist . Es sieht so aus, als ob dies jetzt die bevorzugte Methode ist, um Elemente abhängig vom Anmeldestatus bedingt anzuzeigen.
Dies ist jedoch keine Lösung zum Entfernen von Blöcken basierend auf ihrem Namen, die an anderer Stelle definiert wurden. Sie können die Funktion mit einem Beobachter für layout_load_beforediese Anrufe neu erstellen , $layout->addHandle('customer_logged_in')wenn der Kunde angemeldet ist.
Vielen Dank für Ihre Antwort. Sicher habe ich darüber nachgedacht, das Handle in meinem benutzerdefinierten Modul hinzuzufügen. Aber es könnte wie eine Spitze aussehen und ich wollte einen nativeren Weg verwenden. Vielen Dank für die Erklärung und das Beispiel
zhartaunik
0
Das ist sehr dumm. Ich muss Block / Vorlage / Ressource laden. Nur Kunden haben die Berechtigung, nicht nur Loggin oder Loggout. Aber ich muss 1000 Codezeilen schreiben, um zu überprüfen, ob der Benutzer die Berechtigung hat, dies zu sehen. Einfach nur schön.
Wenn immer noch jemand damit zu kämpfen hat, habe ich ein schnelles Modul geschrieben, das die Layout-Handles customer_logged_in und customer_logged_out hinzufügt, die Sie wie in Magento 1 verwenden können
http://frankclark.xyz/modules/magento-2-get-customer_logged_in-and-customer_logged_out-layout-handles
Genießen !
quelle
Wie andere betont haben, sind diese Griffe jetzt weg. Wenn Sie sich das Magento_Customer-Modul ansehen, werden Sie feststellen, dass Blöcke wie der Registrierungslink immer hinzugefügt, aber nicht gerendert werden, wenn der Kunde angemeldet ist . Es sieht so aus, als ob dies jetzt die bevorzugte Methode ist, um Elemente abhängig vom Anmeldestatus bedingt anzuzeigen.
Dies ist jedoch keine Lösung zum Entfernen von Blöcken basierend auf ihrem Namen, die an anderer Stelle definiert wurden. Sie können die Funktion mit einem Beobachter für
layout_load_before
diese Anrufe neu erstellen ,$layout->addHandle('customer_logged_in')
wenn der Kunde angemeldet ist.quelle
Das ist sehr dumm. Ich muss Block / Vorlage / Ressource laden. Nur Kunden haben die Berechtigung, nicht nur Loggin oder Loggout. Aber ich muss 1000 Codezeilen schreiben, um zu überprüfen, ob der Benutzer die Berechtigung hat, dies zu sehen. Einfach nur schön.
quelle