Mesmo tendo como especialidade o  WordPress, as vezes me deparo com jobs onde preciso fazer personalizações em outros CMS. E esta semana foi uma dessas vezes, onde tive que trabalhar com o Magento.

Como este é um blog post de snippet vou considerar que tu já saibas 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 tu já sabes 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 tu deves criar teu 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:

\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 tu queres 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 consiga deixar os campos de endereço obrigatórios no Magento! Caso tenha alguma dúvida, deixe seu comentário abaixo que eu tentarei te auxiliar!

Deixe uma resposta

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