Dúvida: Validar formulário de componente com PHP via Ajax

Forum destinado aos programadores que pretendem utilizar o framework do Joomla! 1.5 para fazer suas próprias extensões
Avatar do usuário
wmfelipe
Joomleiro
Mensagens: 407
Registrado em: 02 Fev 2009, 13:40
Contato:

Dúvida: Validar formulário de componente com PHP via Ajax

Mensagem por wmfelipe »

Olá a todos.
Estou aprendendo a desenvolver componentes para o joomla e até agora estou conseguindo me virar bem (na medida do possível) :P

Bom, agora estou com uma dúvida sobre como validar o formulário na parte de admin, na hora que se cria um novo registro.

Li esse artigo aqui: http://docs.joomla.org/Form_validation
mas não entendi muito bem. Pelo pouco que entendi o joomla ajuda a validar o formulário mas somente pelo javascript... Olhei como o componente weblinks, nativo do joomla, faz a validaćão e notei que ele só valida por javascript.

Gostaria de fazer uma classe abstrata chamada Validacao e construir métodos estáticos para validar todos os tipos de campos que eu precisar validar.
Mas aonde colocarei essa classe? em que diretório? Como fazer essa classe ir para o diretório certo na hora da instalaćão? Aonde colocar o .js que fará o ajax? E como importar esse .js específico para meu template? :?

Sabendo isso, posso fazer o ajax no onsubmit, validar os dados com a seguranća do PHP e retornar uma mensagem padrão para o usuário...

Poderiam me dar algumas sugestões?

Desde já muito obrigado a todos ;)
pchardnet
Site Admin
Mensagens: 747
Registrado em: 14 Jul 2008, 14:14
Localização: Belo Horizonte - MG
Contato:

Re: Dúvida: Validar formulário de componente com PHP via Ajax

Mensagem por pchardnet »

Talvez estes links possam lhe orientar
- http://docs.joomla.org/Tutorial:Adding_ ... ponent_WIP
- http://docs.joomla.org/Adding_JavaScript
http://www.hostphi.com- Hospedagem de sites e prestação de serviços em Joomla!

http://www.joomlaminas.org - meu blog sobre o Joomla!



---
Não tiro dúvidas por MP
Avatar do usuário
wmfelipe
Joomleiro
Mensagens: 407
Registrado em: 02 Fev 2009, 13:40
Contato:

Re: Dúvida: Validar formulário de componente com PHP via Ajax

Mensagem por wmfelipe »

Obrigado pela dica :)
Mas como farei para incluir a classe em php que irá validar os dados?

Como vocês costumam fazer a validaćão de dados no backend?

Alguma alternativa para uma validaćão rápida e segura no estilo PHP + Ajax?

Obrigado pela atenćão :D
Avatar do usuário
wmfelipe
Joomleiro
Mensagens: 407
Registrado em: 02 Fev 2009, 13:40
Contato:

Re: Dúvida: Validar formulário de componente com PHP via Ajax

Mensagem por wmfelipe »

Bom, até agora estou tentando fazer isso da seguinte forma:

No meu form.php coloquei o seguinte:
1 - Inseri o .js que criei para fazer o ajax:

Código: Selecionar todos

<?php defined('_JEXEC') or die('Restricted access'); 

$document =& Jfactory::getDocument();
$document->addScript(JURI::base() . "components/com_wmfrasedavez/js/wmfrasedavez.js");

?>
2 - E também esse trecho de código em js:

Código: Selecionar todos

<script type="text/javascript">
	function submitbutton(pressbutton) {
		var form = document.adminForm;
		if (pressbutton == 'cancel') {
			submitform(pressbutton);
			return true;
		}

		var validou = validaForm("frase=" + form.frase.value);

		if(validou) {
			submitform(pressbutton);
		}
	}
</script>
a funcao validaForm recebe parametros referentes aos campos e valores que quero validar com o php via ajax...
A requisićão feita pelo ajax ("index2.php?option=com_wmfrasedavez&task=validaForm") deve retornar uma string com erro, ou uma string vazia em caso de não haver erros...

O método que valida o form no meu controller ficou assim:

Código: Selecionar todos

function validaForm() {
		$t = JRequest::getVar('frase');
		return var_dump($t);
		die(var_dump($t));
	}
Porém, não sei como fazer para o joomla parar a excecućão ali no die(). Ou simplesmente como fazer pra ele não retornar todo um html completo quando o método validaForm é chamado...

Gostaria que esse método retornasse somente o die(). Como é possível fazer isso?

Obrigado à todos e por favor, me ajudem!!! :D
Responder