Thanks a lot Mark!!
This helped me a ton and I got my form to work for the most part :)



MarkDNA wrote:
> 
> 
> mapes911 wrote:
>> 
>> Hi Matthew,
>> 
>> If you use this method to attach the javascript routine to the submit
>> button, then in the foobar routine setup an xhrPost to process the form,
>> should I still have an action and a method setup in my controller when I
>> instantiate my form?
>> 
>> Any help would be appreciated. 
>> 
>> Thanks
>> 
> 
> I'm doing this exact thing, so let me see if giving an example would help
> your understanding. Sorry if this is a bit long folks. I've used ellipses
> to try and make it shorter.
> 
> Controller File: (clients/controllers/IndexController.php)
> 
> public function getContactEditForm($clientContactID = null){
>       ...
>       $contactForm = new Zend_Dojo_Form();
>       ...
>       $elements[] = $contactForm->createElement('button', 'ajaxActionContact',
> array(
>               'onclick' => "ajaxAdd('clientContacts','clientContactForm')",
>               'label'   => 'Add Client Contact'));
>       $contactForm->addElements($elements);
>       return $contactForm;
> }
> 
> public function editAction(){
>       ...
>        [I've already set $this->view->info["contacts"]]
>       $contactForm = $this->getContactEditForm();
>       $this->view->contactForm = $contactForm;
> }
> 
> public function editajaxAction(){
>       ...
>       [Do what logic is needed (add in this case), pull back new list of
> contacts]
>       ...
>       $this->view->contactList = $contactList;
>       $this->_helper->layout->disableLayout();
>       $this->render('editClientContactPartial'); break;
> } 
> 
> 
> View File:(clients/views/scripts/index/edit.phtml)
> 
> <? $this->dojo()->javascriptCaptureStart() ?>
> var ajaxAdd = function(divID, formName) {
>       var kw = {
>               url: "<?=BASEURL."clients/index/editajax"?>",
>               handleAs:"text",
>               load: function(response){
>                               dojo.byId(divID).innerHTML = response;
>               },
>               error: function(data){
>                               alert("An error occurred: " + data);
>               },
>               timeout: 2000,
>               form: formName
>       };
>       dojo.xhrPost(kw);  //Servlet get argement with doPost
> }
> 
> <? $this->dojo()->javascriptCaptureEnd() ?>
> 
> ...
> 
> <div id="clientContacts">
>       <?=$this->partial('index/edit-client-contact-partial.phtml',
> array("contactList" =>$this->info["contacts"]))?>
> </div>
> 
> 
> So what we have here is a controller file with several actions. Included
> are ones to create the Dojo form (getContactEditForm), the edit action
> that fires when we first get to the page (editAction), and what I want to
> happen when the form is submitted via the XHR call (editajaxAction).
> 
> When the page is first called, the form is created with a button that has
> an onclick action pointing to a simple js function that captures the form
> info and posts it to the editajaxAction function. The response is then
> loaded into the clientContacts div. Of note here, if you are using layouts
> and are updating a partial (like I am doing), you will need to disable
> layout rending in your ajax action, or the entire layout will render
> inside the partial! ($this->_helper->layout->disableLayout();)
> 
> -Mark G.
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Zend_Dojo_Form---XHR-Post-tp19360770p22326299.html
Sent from the Zend Framework mailing list archive at Nabble.com.

Reply via email to