Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Voila j'ai un form généré avec zend form
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)
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....
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
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
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
Pages: 1