Utilisation de ZendX_Jquery
Bonjour,
Je débute avec l'utilisation de l'ajax avec ZF, j'ai créée un Zend_Form qui me permet d'enregistrer des emails, j'appelle une action de mon controller qui me fait le traitement d'enregistrement dans la BD, par contre j'aimerai le faire en AJAX avec jQuery, je cherche des exemples, mais je ne trouve pas vraiment ce que je veux.
Comment implémenter l'action de mon Controller en AJAX je ne sais pas comment faire, d'avance merci pour votre aide.
Quelques éléments supplémentaires
Voici la version sans Zendx_Jquery, juste Zend_Framework :
La vue du Layout contenant le code AJAX en jQUERY:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
<script type="text/javascript">
$(function(){
$("#traitementOK").hide();
$("#traitementpasOK").hide();
$("#form_newsletter_suscribe").submit(function() {
$("#traitementOK").hide();
$("#traitementpasOK").hide();
myDataForm = $(this).serialize();
$.ajax({
type: "POST",
data: myDataForm,
url: $(this).attr("action"),
success: function(data){
if(data == "OK"){
$("#newsletter_suscribe").remove();
$("#traitementOK").addClass('formOK');
$("#traitementOK").fadeIn(1000);
}else{
$("#traitementpasOK").addClass('formpasOK');
$("#traitementpasOK").fadeIn(1000);
};
},
error: function(erreur){
alert("C'est pas OK");
}
});
return false;
});
});
</script> |
Un petit Helper qui appelle mon objet Zend_Form
Code:
1 2 3 4 5 6 7 8 9 10
|
class Zend_View_Helper_ShowSubscribeForm extends Zend_View_Helper_Abstract
{
public function showSubscribeForm()
{
//Formulaire d'inscription Newsletter
$form = new Frontend_Form_Newsletter();
return (object) $form;
}
} |
Mon action du Controller concerné :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
public function inscriptionnewsletterAction ()
{
//Pas de vue au depart
$this->getHelper('layout')->disableLayout();
$this->getHelper('viewRenderer')->setNoRender();
$form = new Frontend_Form_Newsletter();
$formData = $this->getRequest()->getPost();
if ($formData) {
//Langue d'inscripiton et Actif par defaut
$formData['id_langue'] = App_Tools::getIdSiteLanguageByKey();//Methode perso
$formData['inscrit_actif'] = 1;
if ($form->isValid($formData)) {
$model = new Frontend_Model_Inscritnewsletter($formData);
$mapper = new Frontend_Model_InscritnewsletterMapper();
$mapper->save($model);
echo 'OK';
} else {
$form->populate($formData);
echo 'pasOK';
}
}
} |
Mon Objet Zend_Form :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
public function __construct($options = null)
{
parent::__construct($options);
$this->setMethod('post')
->setAttrib('id', 'form_newsletter_suscribe');
$email = new Zend_Form_Element_Text('inscrit_email');
$email->setLabel(App_Translate::translate('Recevoir notre lettre d\'informations'))
->addDecorator('ViewHelper')
->addDecorator('Errors')
->removeDecorator('DtDdWrapper')
->setAttrib('id', 'email')
->setAttrib('size', '180')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty',true)
->addValidator('emailAddress')->addErrorMessage(App_Translate::translate('Please fill out your e-mail!'));
$submit = new App_Form_Element_Submit(App_Translate::translate('Valider'));
$submit->setAttrib('id', 'send')
->addDecorator('HtmlTag', array('tag' => 'p', 'id' => 'submit-wrap'));
$element = array($email, $submit);
$this->addElements($element);
} |
Le tout fonctionne parfaitement, mais j'aimerai bien-sur j'aimerai utilser Zendx_Jquery pour rester à 100% dans Zend Framework.