Processamento do Fluxo de Requisição

Processamento do Fluxo de Requisição no Magento 2

  1. Descrever como usar os modos Magento
  2. Demonstrar a capacidade de criar um controller frontend com diferentes tipos de resposta (HTML/JSON/redirect)
  3. Demonstrar como usar reescritas de URL de uma página de produto do catálogo para um URL diferente

Descrever como usar os modos Magento

Entender os prós e contras de usar o modo de desenvolvedor ou o modo de produção.

O Magento possui três modos: o default, o developer e o production. (Referência).

  • Default mode:
    • É um híbrido dos modos developer e production. Por isso não é o modo ideal nem para desenvolver e nem para a loja em produção.
    • Ele é o modo padrão, já vem definido na instalação do Magento
    • Utiliza links simbólicos
    • Erros não são mostrados (eles são colocados nos arquivos de log)
    • Arquivos estáticos são gerados em tempo real e symlinked na pasta var/view_prepeocessed.
  • Developer mode:
    • Ideal para desenvolvimento.
    • Baixa performace (bem mais lento).
    • Utiliza links simbólicos. Eles podem ser atualizados com o comando bin/magento setup:static-content:deploy -f ou removidos manualmente.
    • Os erros são mostrados ao usuário e o log é detalhado. Observação: o log de depuração está desativado por padrão, mesmo no modo de desenvolvedor.
    • Não deve ser usado em produção pois apresenta riscos de segurança.
  • Production mode
    • Ideal para produção.
    • Melhor performace (mais rápido).
    • Não usa links simbólicos.
    • Erros são salvos nos arquivos de log.
    • Arquivos estáticos são pré-compilados, a compilação não acontece em tempo real.
  • Maintenance mode
    • Redireciona os usuários para uma página de “Serviço Temporariamente Indisponível”
    • Quando este modo está ativo, o arquivo .maintenance.flag é criado na pasta var/.
    • É possível configurar uma lista de IPs como exceção ao modo de manutenção

Como você ativa/desativa o modo de manutenção?

Quando o modo de manutenção está ativo, o arquivo .maintenance.flag é criado dentro da pasta var/. Quando este arquivo não existe, a loja funciona normalmente. Há também o arquivo .maintenance.ip, no mesmo diretório (var/). Nele existe uma lista de IPs que são exceção ao modo de manutenção.

Comandos:

  • Habilitar o modo manutenção: bin/magento maintenance:enable [--ip=<ip address> ... --ip=<ip address>] | [ip=none]
  • Desabilitar: bin/magento maintenance:disable [--ip=<ip address> ... --ip=<ip address>] | [ip=none]
  • Verificar o status: bin/magento maintenance:status

Onde:

  • --ip=<ip address> representa um IP que será exceção ao modo de manutenção

Para salvar uma lista de IPs, você pode usar: bin/magento maintenance:allow-ips <ip address> .. <ip address> [--none]. O --none limpa a lista.

Depois de colocar o Magento no modo de manutenção, você deve parar todos os processos do consumidor da fila de mensagens. Uma maneira de encontrar esses processos é executar o comando ps -ef | grep queue:consumer:start. E então executar o comando kill <process_id> para cada consumidor. Em um ambiente com vários nós, certifique-se de repetir esta tarefa em cada nó.

Demonstrar a capacidade de criar um controller frontend com diferentes tipos de resposta (HTML/JSON/redirect)

Como você identifica qual módulo/controller corresponde para um determinado URL?

O Magento determina a área baseado no frontname (\Magento\Framework\App\AreaList::getCodeByFrontName). Se nenhum frontname corresponder, a área do frontname padrão é carregada. Se a solicitação não for para a API, o Magento analisa o URL. Essa operação é tratada pelo \Magento\Framework\App\Router\Base::parseRequest. O caminho (o segmento após o domínio) é explodido com a barra como delimitador.

O formato de uma url é esse: sualoja.com/nome_da_rota/nome_do_controller/action.

Exemplo: sualoja.com/catalog/product/view/id/42

  • Primeira parte: frontname é o primeiro parâmetro. Nesse caso é o catalog. Ele é configurado em etc/[area]/routes.xml.
  • Segunda parte: é o caminho para a parte que contém o arquivo do contoller. É onde está a ação. Nesse caso, dentro do caminho Controller/Product/.
  • Terceira parte: é o nome da action. Nesse caso, o Magento produra o arquivo View.php e roda a método execute() dentro dele.
  • O final: /id/42 corresponde à um parâmetro. É o mesmo que id=42.

O que você faria para criar um determinado URL? O URL pode ser criado de várias formas.

  • Definindo o atributo url_key para categorias e produtos.
  • Criando um URL rewrite em Marketing > SEO & Search > URL Rewrites
  • Dentro de um módulo, criando o frontname no arquivo My_Company/My_Module/etc/[area]/routes.xml e o controller em My_Company/My_Module/Controller/MyController/ActionFile.php. Observação: todos os Controllers devem estender \Magento\Framework\App\Action\Action e ter um método execute().

Demonstrar como usar reescritas de URL de uma página de produto do catálogo para um URL diferente

Como o URL amigável de um produto ou categoria é definido?

Através do atributo url_key. Se ele não for definido, ele automaticamente corresponderá ao slug do produto ou categoria.

Como você pode mudá-lo?

Editando a url_key na página de edição do produto ou categoria.

Como você determina qual página corresponde a um determinado URL amigável?

Através da reescrita de URL ou da criação de uma nova rota em um módulo personalizado.

Na tabela url_rewrite, você encontrará uma linha em que o valor request_path é o URL amigável. O valor target_path correspondente é a página interna do Magento. O módulo Magento_UrlRewrite contém um router que verifica se o URL fornecido pode ser correspondido a um request_path na tabela url_rewrite, redirecionando para o target_path se uma correspondência for encontrada.