Como posso verificar se o cliente está logado ou não? Se o cliente não estiver logado, como redirecioná-lo para a página de login ?
Eu quero fazer isso de .phtml
arquivo. Então, por favor me ajude de acordo com isso.
Se você quiser fazê-lo diretamente do .phtml
arquivo, use o seguinte código:
$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();
}
Depois do login, você será automaticamente redirecionado para a visualização atual.
Mas usar o Gerenciador de objetos não é uma boa prática. Você deve usar injeção de dependência sempre que possível.
@ Krupali, se você é inflexível quanto à implementação do código em um modelo, o exemplo de @Bartlomiej Szubert é a melhor escolha. Geralmente, é uma boa prática ocultar esses detalhes de implementação do seu modelo e abstrair a lógica para outra coisa (bloco ou auxiliar).
Aqui está um exemplo de uma implementação auxiliar:
Em seguida, no seu modelo, você pode usar algo como isto:
* namespace mostrado é um exemplo
Dessa forma, seu código pode ser reutilizado em outro lugar ... e se você decidir alterar a lógica de implementação de como verificar se alguém está logado, não precisará alterar seu (s) modelo (s).
fonte
fonte
isLoggedIn()
deve ser substituídogetCustomerGroupId()
porqueisLoggedIn
está a verificar com base em customerId, mas FPC está esvaziando esse valor para NULL, ao contrário do grupo de clientes