Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Suporte geral sobre problemas técnicos para OpenCart v2.x.
#79301
Olá a todos,

Me foi pedido para trocar a textarea, nas etapas finais de um checkout, em "detalhes do frete" e/ou "detalhes do pagamento" (traduzido) (não necessariamente trocar os dois, posso remover um textarea), na parte de adicionar algum detalhe ao pedido. Percebi que não é só tirar a tag textarea e trocar por input type="date", visto que, ao clicar no botão continuar, percebo o erro:

SyntaxError: Unexpected token < in JSON at position 0

OK

<b>Notice</b>: Undefined indx: comment in <b>public/html/loja/catalog/controller/checkout/shipping_method.php</b> on line <b>128</b>

Percebi, também, que a textarea que eu troquei fazia referência aos seguintes códigos em /public_html/loja/catalog/controller/checkout/shipping_method.php:
Código: Selecionar todos
if (isset($this->session->data['comment'])) {
			$data['comment'] = $this->session->data['comment'];
		} else {
			$data['comment'] = '';
}
aproximadamente na linda 67;
e
Código: Selecionar todos
$this->session->data['comment'] = strip_tags($this->request->post['comment']);
aproximadamente na linha 128.

Resumo de tudo isso: eu preciso mexer no controller para inserir um input date (removendo essas linhas de código)? Se sim, quais mudanças seriam cabíveis para que o input funcionasse(clicar no botão continuar sem erros)?
#79303
Se entendi bem você deseja substituir o textarea por um input date, então faça da forma abaixo;

Localizar:
Código: Selecionar todos
<textarea name="comment" rows="8" class="form-control"><?php echo $comment; ?></textarea>
Substituir por:
Código: Selecionar todos
   <input type="text" name="comment" value="<?php echo $comment; ?>" data-date-format="YYYY-MM-DD" class="form-control date">
  <script>
  $(document).ready( function(){
	$('.date').datetimepicker({
		pickTime: false
	});
  });
  </script>
pedromoreira91 gostou disso
#79310
Se a versão de sua loja opencart realmente for a 2.x com essas modificações não irá ocorrer esse erro mencionado, aconselho você reenviar os arquivos nativos do opencart e refazer os passos que sugerir; Agora se a versão de sua loja for a 3.x o problema pode ser cache, para remover o cache veja a imagem abaixo, o link exibido fica na página inicial da admin;

Imagem
#79315
Então, @veteranodf, limpei a cache tanto pelo ftp quanto pelo admin do opencart (que inclusive está na versão 2.3.0.2, desculpe não ter informado), e não funcionou.

Fui atrás do log de erros em system/storage/logs/error.log, e lá falou:

PHP Notice: Undefined index: comment in /public_html/loja/catalog/controller/checkout/payment_method.php on line 187

Continuo achando que é por conta das linhas de código que falei anteriormente.

Por hora não consigo nem instalar uma versão limpa, porque o servidor não habilitou a extensão php zip(isso vai ser corrigido em breve). A única coisa que posso fazer, e fiz, é fazer o download dos arquivos do servidor da loja para upar no servidor de testes(no meu caso) e fazer as alterações do BD, config e htaccess.
#79316
Bem, fazendo os testes, removendo a seguinte linha de código(187 aproximadamente)(essa linha causa o "erro"):
Código: Selecionar todos
$this->session->data['comment'] = strip_tags($this->request->post['comment']);
O pagamento segue para a próxima etapa(cartões e tal).

Dúvida/Problema: a data que eu informar não vai passar no formulário(POST)? Como saber se o POST do php vai enviar a data que eu passei se eu apaguei a linha que diz pra fazer o POST?
#79318
pedromoreira91 escreveu:Então, @veteranodf, limpei a cache tanto pelo ftp quanto pelo admin do opencart (que inclusive está na versão 2.3.0.2, desculpe não ter informado), e não funcionou.

Fui atrás do log de erros em system/storage/logs/error.log, e lá falou:

PHP Notice: Undefined index: comment in /public_html/loja/catalog/controller/checkout/payment_method.php on line 187

Continuo achando que é por conta das linhas de código que falei anteriormente.

Por hora não consigo nem instalar uma versão limpa, porque o servidor não habilitou a extensão php zip(isso vai ser corrigido em breve). A única coisa que posso fazer, e fiz, é fazer o download dos arquivos do servidor da loja para upar no servidor de testes(no meu caso) e fazer as alterações do BD, config e htaccess.
A minha dúvida é, antes de você editar esses arquivos o problema existia?; O seu checkout é o default?

Você não precisa aguardar a hospedagem habilitar essa extensão zip do PHP para descompactar um arquivo no servidor, pode utilizar comandos do próprio linux "unzip aquivo.zip" via SSH ou no próprio terminal do cPanel caso a sua hospedagem oferecer o mesmo;

Aconselho estudar SSH, pois irá trabalhar bem menos, um site de 20gb por exemplo vc migra de uma hospedagem para outro em menos de 4h, pois não tem que baixar nada para seu PC e depois fazer upload, tudo é feito remotamente entre servidores;

Se tiver interesse em aprender https://www.google.com.br/search?ei=X4a ... 0zp6nLvpds
pedromoreira91 gostou disso
#79319
pedromoreira91 escreveu: 13 Set 2018, 11:52 Bem, fazendo os testes, removendo a seguinte linha de código(187 aproximadamente)(essa linha causa o "erro"):
Código: Selecionar todos
$this->session->data['comment'] = strip_tags($this->request->post['comment']);
O pagamento segue para a próxima etapa(cartões e tal).

Dúvida/Problema: a data que eu informar não vai passar no formulário(POST)? Como saber se o POST do php vai enviar a data que eu passei se eu apaguei a linha que diz pra fazer o POST?
Você não pode remover o campo comment, tem que utilizar esse mesmo para esse campo de data;

Sim o campo vai ser passado via post, veja só esta recebendo o mesmo por esse comando "$this->request->post['comment']"

Se você poder ser mais preciso noque necessita eu posso avaliar melhor se estou passando os passos corretos, oque esta escrevendo esta bem confuso;
pedromoreira91 gostou disso
#79320
Obrigado pela recomendação, @veteranodf , vou estudar SSH, sim!

O problema não existia antes de eu editar esses arquivos, ele passava para o pagamento tranquilamente(sim, o checkout é o default, com adição de duas extensões de pagamento do Pagar.me: cartão e boleto, mas não vem ao caso porque é o passo seguinte a esse do comment). Quando eu mudei para adicionar o calendário(data), o erro aconteceu.

O interesse de colocar uma data(do evento) é para saber o prazo para a produção do produto e, por ventura, a loja adiantar o processo de produção(ex.: guardanapos).
extensção -> Módulos

quando entro em Extenção -&gt; M[…]

Night games. One night, no worries Real Women P[…]

@Manoel Vidal Poderia me ajudar com 2 coisas n[…]

Looking for a partner for an unforgettable night? […]