Mesmo tendo como especialidade o WordPress, às vezes me deparo com jobs onde preciso fazer personalizações em outros Sistemas de Gerenciamento de Conteúdo. E esta semana foi uma dessas vezes, onde tive que trabalhar com o Magento.

Como este é um blog post de snippet vou considerar que você já sabe o que é o Magento e como trabalhar com a plataforma. E tenha pelo menos o básico de noção em programação de módulos. Caso não saiba por onde começar, o pessoal da Magenteiro tem um artigo falando sobre criação de módulos no Magento.

Dando um pouco de contexto, neste job meu cliente tinha 4 inputs de endereço e queria colocar 3 deles como obrigatório. Algo bem comum para ser feito no Woocommerce, por exemplo, mas todos sabemos que o Magento pode ser um pouco complicado.

Então agora que você já sabe do que estamos falando, vamos começar a deixar os campos de endereço obrigatórios no Magento!

Código para deixar os campos de endereço obrigatórios no Magento

IMPORTANTE: Para deixar os campos de endereços obrigatórios no Magento, primeiro você deve criar seu módulo personalizado seguindo o passo a passo que informei acima e, depois, seguir as instruções abaixo.

Passo 01:

Dentro do diretório etc do seu módulo, crie o arquivo di.xml com o seguinte conteúdo:

Caminho para diretório: seu_nome/nome_do_modulo/etc

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
  <type name="Magento\Checkout\Block\Checkout\AttributeMerger">
    <plugin name="shippingAddress" type="seu_nome\nome_do_modulo\Plugin\Checkout\Block\Checkout\AttributeMerger\Plugin"/>
  </type>
</config>

Passo 02:

Dentro do seu módulo crie os diretórios conforme abaixo, exatamente na mesma ordem que se encontram:

Receba dicas exclusivas de Programação e WordPress!

Loading

\Plugin\Checkout\Block\Checkout\AttributeMerger

Sendo que no diretório AttributeMerger deverá ser criado o arquivo Plugin.php

Passo 03:

Agora falta pouco para deixar os campos de endereço obrigatórios no Magento!

Dentro do arquivo criado Plugin.php adicione o seguinte código:

<?php
namespace seu_nome\nome_do_modulo\Plugin\Checkout\Block\Checkout\AttributeMerger;

class Plugin {
  public function afterMerge(\Magento\Checkout\Block\Checkout\AttributeMerger $subject, $result)
  {
    if (array_key_exists('street', $result)) {
      $result['street']['children'][X]['validation'] = [
        'required-entry' => true
      ];
    }
    return $result;
  }
}

Agora, substitua o X pelo index do campo que você quer colocar como obrigatório. Caso queira colocar outros, basta replicar o $result com outro valor em X.

IMPORTANTE: Estamos lidando com uma array neste código, então o index deve seguir as mesmas propriedades.

Espero que você consiga deixar os campos de endereço obrigatórios no Magento! Caso tenha alguma dúvida, deixe seu comentário abaixo que eu tentarei auxiliar você!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Fale Conosco