66 lines
1.5 KiB
PHP
66 lines
1.5 KiB
PHP
<?php
|
|
|
|
class Application_Form_AdvancedSearch extends Zend_Form
|
|
{
|
|
|
|
public function init()
|
|
{
|
|
// Add the add button
|
|
$this->addElement('button', 'search_add_group', array(
|
|
'ignore' => true,
|
|
'label' => 'Add',
|
|
'order' => '-2'
|
|
));
|
|
$this->getElement('search_add_group')->removeDecorator('DtDdWrapper');
|
|
|
|
// Add the submit button
|
|
$this->addElement('submit', 'search_submit', array(
|
|
'ignore' => true,
|
|
'label' => 'Submit',
|
|
'order' => '-1'
|
|
));
|
|
$this->getElement('search_submit')->removeDecorator('DtDdWrapper');
|
|
}
|
|
|
|
public function addGroup($group_id, $row_id=null) {
|
|
|
|
$this->addSubForm(new Application_Form_AdvancedSearchGroup(), 'group_'.$group_id, $group_id);
|
|
$this->getSubForm('group_'.$group_id)->removeDecorator('DtDdWrapper');
|
|
|
|
if(!is_null($row_id)) {
|
|
$subGroup = $this->getSubForm('group_'.$group_id);
|
|
$subGroup->addRow($row_id);
|
|
}
|
|
}
|
|
|
|
public function preValidation(array $data) {
|
|
|
|
function findId($name) {
|
|
$t = explode("_", $name);
|
|
return $t[1];
|
|
}
|
|
|
|
function findFields($field) {
|
|
return strpos($field, 'group') !== false;
|
|
}
|
|
|
|
$groups = array_filter(array_keys($data), 'findFields');
|
|
|
|
foreach ($groups as $group) {
|
|
|
|
$group_id = findId($group);
|
|
$this->addGroup($group_id);
|
|
|
|
$subGroup = $this->getSubForm($group);
|
|
|
|
foreach (array_keys($data[$group]) as $row) {
|
|
|
|
$row_id = findId($row);
|
|
$subGroup->addRow($row_id, $data[$group][$row]);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|