Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 19-06-2008 19:15:56

thomasb
Membre
Date d'inscription: 26-05-2008
Messages: 30

[Résolu] Problème avec Zend Form et un apel Ajax

Voila j'ai un form généré avec zend form

Code:

class forms_viewclientusersindiceForm extends Zend_Form{
    
    private $translate;
    
    
    public function __construct($options = null,$data)
    {
        
        parent::__construct($options);
        
        Zend_Loader::loadClass('Zend_Translate');
        $this->translate = Zend_Registry::get('translate');
        $this->setName('userindice');

        
        $input = new Zend_Form_Element_Text('truc');
        $input->setValue('citronopipo');
                    

        $lst_invites = new Zend_Form_Element_Multiselect('lst_invites');
        $client_invites_model = new clientinvitesclients();
        $list = $client_invites_model->fetchInvitesClients($data['iduser']);
        
        
        $lst_invites->addMultioption("null",$this->translate->_("Veuillez sélectionner..."));
        foreach ($list as $key => $val) {
            $lst_invites->addMultiOption($val->iduser,$val->user_firstname." ".$val->user_name);
        }
        
        $lst_invites->setLabel($this->translate->_('Invités disponibles :'))
           
           ->addPrefixPath('Decorators','Decorators','decorator')
           ->setAttrib('class','champ')
           ->setAttrib('size','10')
           ->setAttrib('STYLE','width: 200px')
           ->setAttrib('onClick','additem(document.getElementById(\'lst_invites\').options[document.getElementById(\'lst_invites\').selectedIndex]);')
           ->addDecorator('InputLabelInvite');
               
                      
                
        $lst_invites_indice = new Zend_Form_Element_Multiselect('lst_invites_indices');
        $list = $client_invites_model->fetchIndicesInvites($data['idindice']);
        //$lst_invites_indice->addMultioption('null',$this->translate->_("Veuillez sélectionner..."));
        foreach ($list as $key => $val) {
            $lst_invites_indice->addMultiOption($val->iduser,$val->user_firstname." ".$val->user_name);
        }
        
        $lst_invites_indice->setLabel($this->translate->_('Invités ayant accès à cet indice:'))
           ->setRequired(true)
           ->addPrefixPath('Decorators','Decorators','decorator')
           ->setAttrib('class','champ')
           ->setAttrib('size','10')
           ->setAttrib('STYLE','width: 200px')
           ->setAttrib('onClick','delitem(document.getElementById(\'lst_invites_indices\').options[document.getElementById(\'lst_invites_indices\').selectedIndex]);')
           ->addDecorator('InputLabelInvite');
              
    $submit = new Zend_Form_Element_Button('valider');
                $submit->setLabel($this->translate->_('Valider'))
                ->setAttrib('class','bouton_small')
                ->setAttrib('onClick','submitusersindice(\''.$data['idindice'].'\');')
                //->setAttrib('type','submit')
                ->clearDecorators()
                ->addDecorator('FormElements')
                
                  ->setDecorators(array(array('ViewHelper', array('tag' => "")),
                            array('Errors', array('tag' => "")),
                            array('HtmlTag', ),
                            array('HtmlTag', array('tag' => '"td','valign'=>'center','class'=>"righted"))))
                ->setAttrib('value',$this->translate->_('Valider'));
           
        /*$ajouter = new Zend_Form_Element_Button('ajouter');
        $ajouter->setLabel($this->translate->_('ajouter'))
                ->setAttrib('class','bouton_small')
                ->setAttrib('onClick','submit();')
                ->addPrefixPath('Decorators','Decorators','decorator')
                ->addDecorator('Multiselectaddbutton')
                ->setValue('ajouter');*/
                  
        $this->addElements(array($lst_invites,$lst_invites_indice,$input,$submit));
    }
}

j'appelle un JavaScript contenu dans ma vue qui execute l'appel ajax en mode post (je passe également des données via l'url mais je ne pense pas que le problème vienne de la)

Code:

function submitusersindice($indice){
    var url = "<?echo $this->url(array('controller'=>$this->request->getControllerName(),'module'=>$this->request->getModuleName(),'action'=>'etape3formajax','a1'=>'vusers'),'module',true);?>"+"/idind/"+$indice;
    new Ajax(url, {method: 'post',onRequest: function(req){showload();},onComplete: function(req){hideload();},update: $('formusers')}).request();
}

le problème est la dans mon controller je n'ai plus du tout accès au donnée du post....

Code:

function etape3formajaxAction(){
            
        $this->view->etape = $this->translate->_("Liste des indices créés");
        $indices = New $this->clients_indicesstandards_model();
        require_once('forms/viewclientusersindiceform.php');
        
        
                
        if ($this->_request->getParam('a1','')=="vusers"){
            
            $clientinviteform = new forms_viewclientusersindiceForm(null,array('iduser'=>$this->iduser,'idindice'=>$this->_request->getParam('idind',0)));
            $this->view->clientinviteform = $clientinviteform;
            $indices_users = new clientindicesusers();
            if ($this->_request->isPost()){
                $formData = $this->_request->getPost();
                if ($clientinviteform->isValid($formData)){
                    echo var_dump($formData);
                    $indices_users->unset_users_from_indice($this->_request->getParam('idind',0),$this->iduser,$this->db);                
                    @$indices_users->set_users_to_indice($this->_request->getParam('idind',0),$formData['lst_invites_indices'],$this->db);
                }else{
                    $clientinviteform->populate($formData);
                }
            }
        }

Je suis complétement bloqué...

Dernière modification par Mr.MoOx (20-06-2008 10:02:41)

Hors ligne

 

#2 20-06-2008 09:53:50

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu] Problème avec Zend Form et un apel Ajax

Je sais pas ce que tu utilise comme libriairie JS mais on dirait que tu oublie de fournir les données post à ton new Ajax(...)

Hors ligne

 

#3 20-06-2008 10:00:27

thomasb
Membre
Date d'inscription: 26-05-2008
Messages: 30

Re: [Résolu] Problème avec Zend Form et un apel Ajax

Mr.MoOx a écrit:

Je sais pas ce que tu utilise comme libriairie JS mais on dirait que tu oublie de fournir les données post à ton new Ajax(...)

C'est exact Monsieur Moox, j'avais trouvé la réponse hier soir mais je n'ai pas eu le temps de 'poster' je comptais le faire aujourd'hui...
il manque juste
data:document.nomduform
dans l'appel ajax et pour info j'utilise mootools.

Je posterai la syntaxe exact lundi.

Merci

Hors ligne

 

#4 23-06-2008 12:36:17

thomasb
Membre
Date d'inscription: 26-05-2008
Messages: 30

Re: [Résolu] Problème avec Zend Form et un apel Ajax

Code:

function submitusersindice($indice){
    var url = "<?echo $this->url(array('controller'=>$this->request->getControllerName(),'module'=>$this->request->getModuleName(),'action'=>'etape3formajax','a1'=>'vusers'),'module',true);?>"+"/idind/"+$indice;
    new Ajax(url, {method: 'post',data: document.forms.userindice,onRequest: function(req){showload();},onComplete: function(req){hideload();autoselect();_fckeditor();},update: $('formusers')}).request();
}

Par contre nouveau problème dans ce formulaire j'ai un champ qui provient d'un FCKEditor... malheureusement la valeur de celui ci ne transite pas a travers le post en ajax...
Je comprends pas trop pourquoi...

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