Alguém pode postar um guia sobre a remoção do campo telefônico 'obrigatório' no checkout com base no layout magento Versão 1.8.0.0, a maioria dos recursos pesquisados no Google atualmente está desatualizada e não funciona mais. Esse parece o local perfeito para manter um guia / instruções atualizados.
Seria útil se alguém pudesse confirmar a solução de trabalho baixando o Magento 1.8.0.0 e fornecendo a prova de sua remoção, esses trechos de código às vezes são úteis, mas ainda precisamos encontrar uma solução de trabalho de maneira fácil de ler / documentar.
Respostas:
Antes que
1.8.1
eu não tenha conhecimento de nenhuma maneira de fazer isso funcionar, você deve substituir a classe principal abstrata no pool de códigos local ou reescrever todas as classes filho (feias, eu sei).A partir
1.8.1
de então, eles apresentaram o eventocustomer_address_validation_after
. Eu me livrei da validação usando a reflexão, mesmo que não tenha muito orgulho disso. Pode não resolver o seu problema, mas pensei em publicá-lo de qualquer maneira.Também escrevi um script de atualização para definir o arquivado como não obrigatório e editei todos os formulários para remover a validação de front-end. Como eu disse, pode não ser a melhor solução, mas é melhor do que reescrever o IMHO de 3-4 classes.
ATUALIZAÇÃO A equipe principal envolveu o evento
customer_address_validation_after
em uma partida condicional1.9.0
através de1.9.1.1
(eu realmente pergunto por que, não faz sentido para mim ...) para que a minha solução não vai funcionar para essas versões, infelizmente. Felizmente, o condicional foi removido1.9.2
.fonte
Você precisará modificar a
Mage_Customer_Model_Address_Abstract
classe * na linha 375-377 comentando a validação Zend do número de telefone.bem como o próprio atributo de telefone no banco de dados, removendo a classe necessária. Isso pode ser feito com a seguinte consulta
Isso cuidará da validação de front-end (Javascript) dos campos telefônicos.
** Certifique-se de copiar o arquivo de classe para o seu
local
diretório de código *fonte
eav_attribute
com o código 'phone'; portanto, você não pode dizer qual foi atualizado. Então o código deve funcionar (apenas o testou). Para a parte visual, você ainda precisará remover<em>*</em>
o rótulo do campo em todos os formulários (edição de checkout / endereço). Obviamente, se você tiver algum tipo de checkout de uma etapa instalado, ele poderá substituir algumas das funcionalidades padrão do Magento e essa resposta poderá não funcionar.Sugiro alterar o modelo de endereço para o tema do site e tornar o telefone um campo oculto com o valor padrão de espaço ou traço. Isso não exigirá reescrições / substituições.
fonte
Você não poderia simplesmente reescrever as classes que usam o resumo usando uma extensão personalizada e reescritas de configuração.
Mage_Sales_Model_Quote_Address
,Mage_Customer_Model_Address
,Mage_Sales_Model_Order_Address
,Em seguida, você pode criar sua própria
validate
função que excluirá a verificação por telefone ou, melhor ainda, verificará todos os atributos necessários e valida se eles estão definidos.fonte
Acabei de encontrar uma pequena extensão "Webguys_Telefonkeinpflicht" de Tobi, que basicamente segue a abordagem de David. Ele reescreve as subclasses respectivas. O que eu mais gosto é o fato de que ele despacha apenas um evento nas classes reescritas e toda a personalização adicional é feita em um observador de eventos. Ele também observa o
core_block_abstract_to_html_after
evento para remover a estrela e a classe necessária do campo de entrada com alguma magia negra regex. E, é claro, vem com um script de configuração, que torna o atributo de telefone não obrigatório naeav_attribute
tabela. Você pode verificar a extensão no GitHub .fonte