Class to dynamically create "chained" HTML Select elements. Choosing an option in the first <select> changes the content of the second select and so on.
This element is considered as a group. Selects will be named groupName[0], groupName[1], ...
Creating a hierselect element based on values from a database table
<?php
require_once 'HTML/QuickForm.php';
$form = new HTML_QuickForm('example');
$form->setDefaults(array('test' => array('4','15')));
$sel =& $form->addElement('hierselect', 'test', 'Test:', null, '/');
$mainOptions = $db->getAssoc('select pkparent, par_desc from parent');
$result = $db->query("select fk_parent, pkchild, chi_desc from child");
while ($result->fetchInto($row)) {
$secOptions[$row[0]][$row[1]] = $row[2];
}
// Using setMainOptions and setSecOptions is now deprecated
// use setOptions.
$sel->setOptions(array($mainOptions, $secOptions));
$form->display();
?>
Creating more than two select elements is just as simple.
Creating a hierselect element with three select elements
<?php
require_once 'HTML/QuickForm.php';
$form = new HTML_QuickForm('example');
$select1[0] = 'Pop';
$select1[1] = 'Classical';
$select1[2] = 'Funeral doom';
// second select
$select2[0][0] = '--- Artist ---';
$select2[0][1] = 'Red Hot Chil Peppers';
$select2[0][2] = 'The Pixies';
$select2[1][0] = '--- Artist ---';
$select2[1][1] = 'Wagner';
$select2[1][2] = 'Strauss';
$select2[2][0] = '--- Artist ---';
$select2[2][1] = 'Pantheist';
$select2[2][2] = 'Skepticism';
// Create a third select with prices for the cds
$select3[0][0][0] = '--- Choose the artist ---';
$select3[0][1][0] = '15.00$';
$select3[0][2][1] = '17.00$';
$select3[1][0][0] = '--- Choose the artist ---';
$select3[1][1][0] = '15.00$';
$select3[1][2][1] = '17.00$';
$select3[2][0][0] = '--- Choose the artist ---';
$select3[2][1][0] = '15.00$';
$select3[2][2][1] = '17.00$';
// Create the Element
$sel =& $form->addElement('hierselect', 'cds', 'Choose CD:');
// And add the selection options
$sel->setOptions(array($select1, $select2, $select3));
$form->display();
?>
HTML_Common
HTML_QuickForm_hierselect
HTML_QuickForm_hierselect Inherited Methods
Method Name | Summary |
---|---|
Constructor HTML_QuickForm_group::HTML_QuickForm_group() | Class constructor |
HTML_QuickForm_group::accept() | Accepts a renderer |
HTML_QuickForm_group::exportValue() | As usual, to get the group's value we access its elements and call |
HTML_QuickForm_group::getElementName() | Returns the element name inside the group such as found in the html form |
HTML_QuickForm_group::getElements() | Gets the grouped elements |
HTML_QuickForm_group::getFrozenHtml() | Returns the value of field without HTML tags |
HTML_QuickForm_group::getGroupType() | Gets the group type based on its elements Will return 'mixed' if elements contained in the group are of different types. |
HTML_QuickForm_group::getName() | Returns the group name |
HTML_QuickForm_group::getValue() | Returns the value of the group |
HTML_QuickForm_group::onQuickFormEvent() | Called by HTML_QuickForm whenever form event is made on this element |
HTML_QuickForm_group::setElements() | Sets the grouped elements |
HTML_QuickForm_group::setName() | Sets the group name |
HTML_QuickForm_group::setValue() | Sets values for group's elements |
Method Name | Summary |
---|---|
Constructor HTML_QuickForm_element::HTML_QuickForm_element() | Class constructor |
HTML_QuickForm_element::accept() | Accepts a renderer |
HTML_QuickForm_element::apiVersion() | Returns the current API version |
HTML_QuickForm_element::exportValue() | Returns a 'safe' element's value |
HTML_QuickForm_element::freeze() | Freeze the element so that only its value is returned |
HTML_QuickForm_element::getFrozenHtml() | Returns the value of field without HTML tags |
HTML_QuickForm_element::getLabel() | Returns display text for the element |
HTML_QuickForm_element::getName() | Returns the element name |
HTML_QuickForm_element::getType() | Returns element type |
HTML_QuickForm_element::getValue() | Returns the value of the form element |
HTML_QuickForm_element::isFrozen() | Returns whether or not the element is frozen |
HTML_QuickForm_element::onQuickFormEvent() | Called by HTML_QuickForm whenever form event is made on this element |
HTML_QuickForm_element::setLabel() | Sets display text for the element |
HTML_QuickForm_element::setName() | Sets the input field name |
HTML_QuickForm_element::setPersistantFreeze() | Sets wether an element value should be kept in an hidden field when the element is frozen or not |
HTML_QuickForm_element::setValue() | Sets the value of the form element |
HTML_QuickForm_element::unfreeze() | Unfreezes the form element |