Wie kann ich überprüfen, ob der Kunde angemeldet ist oder nicht? Wenn der Kunde nicht angemeldet ist, wie kann er dann zur Anmeldeseite weitergeleitet werden ?
Ich möchte dies aus der .phtml
Datei tun . Bitte helfen Sie mir dabei.
Wenn Sie dies direkt aus der .phtml
Datei heraus tun möchten, verwenden Sie den folgenden Code:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customerSession = $objectManager->get('\Magento\Customer\Model\Session');
$urlInterface = $objectManager->get('\Magento\Framework\UrlInterface');
if(!$customerSession->isLoggedIn()) {
$customerSession->setAfterAuthUrl($urlInterface->getCurrentUrl());
$customerSession->authenticate();
}
Nach dem Login werden Sie automatisch zur aktuellen Ansicht weitergeleitet.
Die Verwendung von Object Manager ist jedoch keine gute Vorgehensweise. Sie sollten nach Möglichkeit die Abhängigkeitsinjektion verwenden.
@Krupali, wenn Sie fest davon überzeugt sind, dass Ihr Code in einer Vorlage implementiert wird, ist das Beispiel von @Bartlomiej Szubert die bessere Wahl. Im Allgemeinen empfiehlt es sich, diese Implementierungsdetails aus Ihrer Vorlage zu verbergen und die Logik auf etwas anderes (Block oder Helfer) zu abstrahieren.
Hier ist ein Beispiel für eine Hilfsimplementierung:
Dann können Sie in Ihrer Vorlage Folgendes verwenden:
* Der gezeigte Namespace ist ein Beispiel
Auf diese Weise kann Ihr Code an anderer Stelle wiederverwendet werden. Wenn Sie die Implementierungslogik ändern möchten, mit der überprüft wird, ob jemand angemeldet ist, müssen Sie Ihre Vorlage (n) nicht ändern.
quelle
quelle
isLoggedIn()
sollte durch ersetzt werden,getCustomerGroupId()
daisLoggedIn
die Prüfung auf der Grundlage der Kunden-ID erfolgt, aber FPC