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.