Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-03-2011 12:25:46

Jahdere
Nouveau membre
Date d'inscription: 24-03-2011
Messages: 1

Comment gérer l'action d'un formulaire en ajax??

Bonjour,

Je suis en train de développer la partie admin d' un portail SSO à l'aide de Zend.
Je dois donc gérer des formulaires pour ainsi donc modifier la base de donner et pouvoir gérer les sites utilisant le portail.

Pour faire cela j'ai décidé donc de mettre un peu de design en utilisant une lightbox pour appeler le formulaire demandé à l'aide de Fancybox (bibliothèque jquery).

Cependant il faut gérer l'action du formulaire en ajax, et n'y connaissant rien en ce langage, je post sur ce forum afin de peut etre trouver une solution.

En ce moment même j'arrive à générer le formulaire dans la lightbox, sauf que je ne comprend pas comment je peux appeler l'action du formulaire qui est dans le controller à l'aide d'une fonction ajax.

Voici mes sources :

L'appelle du formulaire dans la lightbox situé dans la view :

Code:

<td>
      <?php if ($entry->url):?>
      <div id="tip5" style="display:none">
                                
<?php
    $this->modForm->setAction($this->url());
    echo $this->modForm;
?>
                                
    </div>                            
    <a id="lightbox" href="#modif_form" >
    <img id='edit' src="/img/modif.png" title="modifier" style="border: 0px;"/></a>
        <?php endif;?>
</td>

L'action du formulaire situé dans le controller :

Code:

    public function modsiteAction() {

        $form = new Application_Form_SiteMod();

        $url = htmlspecialchars_decode($this->getRequest()->getParam('url'));

        $siteMapper = new Application_Model_SitesMapper();
        $site         = new Application_Model_Sites();
        if ($siteMapper->find($url, $site)) {

            if (isset($url)) {

                if ($this->getRequest()->isPost()) {
                    $post = $this->getRequest()->getPost();
                        
                    if ($form->isValid($post)) {
                        $value         = $form->getValidValues($post);
                        $site->setIp($value['ip']);
                        $site->setRest($value['rest']);
                        $siteMapper->save($site);
                        return $this->_helper->redirector('index');
                    }
                } else {
                    $form->setDefault("ip", $site->getIp());
                    $form->setDefault("url", $site->getUrl());
                    $form->setDefault("rest", $site->getRest());


                }


                $this->view->form        =    $form;
                $this->view->url        =    $url;
            }
        } else {
            return $this->_helper->redirector('index');
        }

    }

Enfin, voici ma fonction ajax, qui est tiré de la doc de fancybox :

Code:

$("#tip5").fancybox({
    'scrolling'        : 'no',
    'titleShow'        : false,
    'onClosed'        : function() {
        $("#modif_error").hide();
    }
});

$("#modif_form").bind("submit", function() {

    if ($("#Url").val().length < 1 || $("#Ip").val().length < 1) {
        $("#modif_error").show();
        $.fancybox.resize();
        return false;
    }

    $.fancybox.showActivity();

    $.ajax({
        type        : "POST",
        cache    : false,
        url        : "AdminController/modsiteAction",
        data        : $(this).serializeArray(),
        success: function(data) {
            $.fancybox(data);
        }
    });

    return false;
});

L'action du controller est correct, je l'ai déja testé dans une nouvelle page, le réel problème est d'appeler l'action du controller en ajax smile

Si quelqu'un a une réponse à mon problème, je suis tout ouïe !

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages