[ZF] Form Ajax

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

John Cena

John Cena

17/09/2012 09:10:45
Quote Anchor link
Gndag,

Ik heb een form gemaakt met Zend (1.11)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
    $project = new Zend_Form_Element_Select('project');
            $project->setLabel('Project')->setAttribs(array('style' => 'display: none;'))->class="small";
            foreach($projectList as $projectItem)
            {
                $project->addMultiOption($projectItem->id, $projectItem->flowName);
            }
        $this->addElement($project);
        
            $subField = new Zend_Form_Element_Text('subField');
            $subField->setLabel('SubTaak')->setAttribs(array('style' => 'display:none;'))->id="subField";
            $subField->class="small";
        $this->addElement($subField);


Wat ik nou eigenlijk wil is dat subtaak zichtbaar wordt zosnel project geselecteerd is. Tot hier geen problemen. Alleen, nu wil ook nog dat subtaak gevuld wordt met de subtaken van het geselecteerde project.

Iemand enig idee?
 
PHP hulp

PHP hulp

19/04/2024 19:51:09
 
Kees Schepers

kees Schepers

17/09/2012 09:38:36
Quote Anchor link
Lijkt mij, dat je dit, alleen gevuld krijgt met een AJAX call. Bijvoorbeeld jQuery:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$('select.project').change(function() {
    var projectid = $('option:selected', this).val();
    $.getJSON('/controller/action-naar-projecten/projectid/' + projectid, function(data) {
        $('#subField').append('<option val=".." /></option>');
    });
});


Iets in die trend?
 
Wouter J

Wouter J

17/09/2012 09:39:38
Quote Anchor link
Alleen dan de AJAX request buiten het event halen, anders wordt er per change weer een HTTP request uitgevoerd...
 
Kees Schepers

kees Schepers

17/09/2012 10:15:32
Quote Anchor link
Opzich een goed punt, of de data lokaal storen en daarmee voorkomen dat er een dubbel request uitgevoerd wordt.

Je kunt ook het complete select 'ding' laten tekenen in een action met alle opties bijv:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
public function action-naar-projecten() {
    $this->getHelper('layout')->disableLayout(true);
    $this->getHelper('viewRenderer')->setNoRender(true);

    $projectId = $this->_getParam('projectid');

    $taks =    $ormDing->getAllTasks($projectid);

    $form = new Chi_Lion_Form();
    $subTaks = $form->subField;
    foreach($tasks as $task) {
        $subTaks->addMultiOption($task['name'], $task['taskid']);
    }


    echo $subField->render();
}

?>


Ik heb even geen rekening gehouden met naming conventions etc maar probeer je een idee te geven. Dit is wel minder efficiënt omdat je dan voor elke onchange een nieuwe selectbox gaat tekenen maar als het voor backend is en alle tasks cached in memcache/apc ofzo dan moet het wel goed te doen zijn denk ik.
 
John Cena

John Cena

17/09/2012 10:59:18
Quote Anchor link
Hartelijk hartelijk dank voor het meedenken, ik had het klaar met Kees zijn 2de optie, hoor ik ineens dat het niet meer nodig is.

Grr.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.