wpbrasil / odin

Framework and base theme for development with WordPress.
http://wpod.in
565 stars 195 forks source link

Erro formulario de contato / Classe Odin_Contact_Form: #454

Closed fabianomaximiano closed 6 years ago

fabianomaximiano commented 7 years ago

Boa tarde, acabo de criar um formulario simples seguindo o exemplo basico do formulario com campos nome, email e mensagem. Mas esta me retornando erro como esse, e como indicado que é proibido mecher no core. solicito ajuda, uma vez que sou noobe na linguagem php.

Warning: Illegal offset type in /home/cmaxcomb/public_html/pizzaria/wp-content/themes/pizzaria/core/classes/class-contact-form.php on line 107

Warning: Illegal offset type in /home/cmaxcomb/public_html/pizzaria/wp-content/themes/pizzaria/core/classes/class-contact-form.php on line 107

Warning: Illegal offset type in /home/cmaxcomb/public_html/pizzaria/wp-content/themes/pizzaria/core/classes/class-contact-form.php on line 107

Warning: Cannot modify header information - headers already sent by (output started at /home/cmaxcomb/public_html/pizzaria/wp-content/themes/pizzaria/core/classes/class-contact-form.php:107) in /home/cmaxcomb/public_html/pizzaria/wp-includes/pluggable.php on line 1195

pra ver o exemplo funcionando segue link: http://cmax.com.br/pizzaria/index.php/contato/

fico no aguardo.

AdsonCicilioti commented 7 years ago

Qual versão do Odin vc está usando?

fabianomaximiano commented 7 years ago

Bom dia, a versao 2.2.5,

AdsonCicilioti commented 7 years ago

Pedir para vc baixar a versão atual 2.3.0 pode não ser o ideal pressuposto que vc já deve ter personalizado bastante sua versão aí, certo? Então faz o seguinte: pega apenas os arquivos class-contact-form.php e a pasta abstracts aqui do repositório oficial e substitui pelos que estão aí no seu tema. Sugiro fazer um backup destes arquivos antes de salvar os novos em seu tema.

Pegando esses arquivos vc pega as correções implementadas na pr #432

rafaelreis96 commented 7 years ago

Descobri o Odin por acaso e gostei muito, e no meu projeto apareceu o mesmo erro já com a versão 2.3.0, então fiz uma pequena alteração linha 105.

de: $label = isset( $field['label'] ) ? $field['label'] : $id; para: $label = !isset( $field['label'] ) ? $field['label'] : $id;

Dai funcionou perfeitamente.

mariovalney commented 7 years ago

Ué... mas @Rafael-Reis se o field não estiver "setado" porque vai atribuí-lo a $label? Aí sim é que vai dar erro...

rafaelreis96 commented 7 years ago

sim, ficou estranho e desnecessário atribuir o valor do else desse jeito, mas já evita o erro de índice do array e consegue o enviar o email.

mariovalney commented 7 years ago

Não. O erro deve ser em outro lugar...

rafaelreis96 commented 7 years ago

O valor de $field['label'] é outro array, então por isso dava erro, já que o índice só pode ser string ou int e não um array, então minha solução ficou assim:

isset($field['label'] ) ? $field['label']['text'] : $id;

não vai ter erros, e vai imprimi no corpo do E-mail os labels e values do form corretamente.