Thanks Brad.
Now I had one other question. Let's say my data looks like this:
{identifier:TERRITORY,items:[
{SUB:8-8-19-6,TERRITORY:8-8-19-66-1-3-25},
{SUB:8-8-19-6,TERRITORY:8-8-19-66-1-2-24}, ..
Instead of this:
{identifier:name,items:[
{name:0,0:Lion},
{name:1,0:Cheeta},
{name:2,0:Cat}, ...
I want to USE the SUB values to get the values for the TERRITORY. How do
I do that?
From: Bart McLeod [mailto:mcl...@spaceweb.nl]
Sent: Monday, April 27, 2009 11:22 AM
To: 411161
Cc: fw-general@lists.zend.com
Subject: Re: [fw-general] How to set up dependant dropdowns in form
You should be using dojo selects in the first place, I have a working
example (4files):
file index.phtml (in scripts/ directory)
?php echo $this-doctype() ?
html
head
?php echo $this-headTitle() ?
?php echo $this-headMeta() ?
?php echo $this-headLink() ?
?php echo $this-headStyle() ?
?php
$this-dojo()-setLocalPath('/zf/js/dojo/dojo.js')
-addStyleSheetModule('dijit.themes.tundra');
echo $this-dojo()-enable();
echo $this-headScript();
?
/head
body class=tundra
?php echo $this-form ?
?php echo $this-inlineScript() ?
/body
/html
//following files in root directory
file index.php:
?php
require_once 'autoload.php';
$view = new Zend_View();
Zend_Dojo::enableView($view);
$form = new Zend_Dojo_Form('myform');
$form-setView($view);
$autoComplete1 = new Zend_Dojo_Form_Element_FilteringSelect('sel_1');
//$autoComplete1 = new Zend_Form_Element_Select('sel_1');
$autoComplete1-setMultiOptions(
array('Cats', 'Dogs')
);
$autoComplete1-setAttrib('onchange', dijit.byId('sel_2').searchAttr =
dijit.byId('sel_1').getValue();return true);
$autoComplete1-setLabel('Select 1');
$form-addElement($autoComplete1);
$searchAttribute = @$_GET['sel_1'];
if( ! in_array($searchAttribute, array('0', '1'))){
$searchAttribute = '0';
}
$form-addElement(
'FilteringSelect',
'sel_2',
array(
'label' = 'Select 2',
'storeId' = 'myData',
'storeType'= 'dojo.data.ItemFileReadStore',
'storeParams' = array( 'url' = '/zf/dojo.php',),
'dijitParams' = array( 'searchAttr' = $searchAttribute,
),
)
);
$form-addElement('submit','go');
$form-populate($_GET);
$view-form = $form-render();
$view-addBasePath('E:\werk\zf fixes\testsite');
echo $view-render('index.phtml');
?
file dojo.php:
?php
require_once 'autoload.php';
$data = new Zend_Dojo_Data();
$data-setIdentifier('name');
$cats = array('Lion', 'Cheeta', 'Cat');
foreach ($cats as $key = $cat) {
$data-addItem(array('name' = $key, '0' = $cat));
}
$dogs = array(3 = 'Bello', 4 = 'Blix', 5 = 'Freddy', 6 = 'Hungry
Bill');
foreach ($dogs as $key = $dog) {
$data-addItem(array('name' = $key,1 = $dog));
}
echo $data;
file autoload.php: (depecated)
?php
require_once 'Zend/Loader.php';
/**
* Loads all Zend Framework classes automagically
*
* @param string $className
*/
function __autoload($className){
Zend_Loader::loadClass($className);
}
?
Hope this helps,
Bart
411161 schreef:
Ace Paul wrote:
I have a form, which I would like to use dependent drop downs
in. I can't
seem to find anything about it hear, after looking all morning
trying to
work it out.
I have one field race_country
when an option is selected I would like to show the cities in
that
country.
The following is what I have currently in the form, which will
show all
countries and all cities.
Any help would be great. thanks
$table = new Country();
foreach ($table-fetchAll() as $c) {
$country-addMultiOption($c-country_id, $c-country_name);
}
$this-addElement( $country);
$city = new Zend_Form_Element_Select('race_city');
$city-setLabel('City')
-setRequired(true);
$table = new City();
foreach ($table-fetchAll() as $c) {
$city-addMultiOption($c-city_id, $c-city_name);
}
$this-addElement( $city);
Does anyone have a complete example of this?
I used this example to get it up and going:
http://techchorus.net/autocomplete-example-zenddojoformelementfilterings
elect-and-zenddojodata
With the change located in the comments:
div dojoType=dojo.data.ItemFileReadStore url=/strain/list
jsId=strainStore/div
but I am having trouble trying to do dependent drop downs. Any good
references out there, or is this too early to attempt with Zend Dojo?