/** * @param TableModel $table */ public function __construct(TableModel $table) { parent::__construct('Display'); $this->tableModel = $table; $tableHeaders = $this->tableModel->getTableHeaders(); // Group checkboxes by property $columnGroups = array(); foreach ($tableHeaders as $tableHeader) { /** @var TableHeaderCellModel $tableHeader */ $columnNameSegments = explode('.', $tableHeader->getName()); if (!is_array($columnNameSegments) || empty($columnNameSegments)) { continue; } // Create all values for each property $label = $tableHeader->getName(); $columnGroupName = 'base'; if (count($columnNameSegments) > 1) { $columnGroupName = $columnNameSegments[0]; $segments = $columnNameSegments; unset($segments[0]); $label = implode('.', $segments); } if (!array_key_exists($columnGroupName, $columnGroups)) { $columnGroups[$columnGroupName] = array(); } $valueOption = array('value' => $tableHeader->getName(), 'label' => $label, 'selected' => $tableHeader->isVisible()); $columnGroups[$columnGroupName][] = $valueOption; } // Create the actual form element per property foreach ($columnGroups as $property => $checkboxValues) { $entityColumn = new NestedSettingsFieldset($property, $checkboxValues); $this->add($entityColumn); } $this->add(array('name' => 'submit', 'type' => 'submit', 'label' => '<span class="glyphicon glyphicon glyphicon-refresh"></span>', 'attributes' => array('value' => 'Apply', 'class' => 'btn btn-default'))); }
/** * @param TableModel $table */ public function __construct(TableModel $table) { parent::__construct('Display'); $this->tableModel = $table; $tableHeaders = $this->tableModel->getTableHeaders(); // Group checkboxes by property $columnGroups = array(); foreach ($tableHeaders as $tableHeader) { /** @var TableHeaderCellModel $tableHeader */ $columnNameSegments = explode('.', $tableHeader->getName()); if (!array_key_exists($columnNameSegments[0], $columnGroups)) { $columnGroups[$columnNameSegments[0]] = array(); } } // Create all values for each property foreach ($tableHeaders as $tableHeader) { $columnNameSegments = explode('.', $tableHeader->getName()); $label = $tableHeader->getName(); if (count($columnNameSegments) > 1) { $segments = $columnNameSegments; unset($segments[0]); $label = implode('.', $segments); } $valueOption = array('value' => $tableHeader->getName(), 'label' => $label, 'selected' => $tableHeader->isVisible()); $columnGroups[$columnNameSegments[0]][] = $valueOption; } // Create the actual form element per property foreach ($columnGroups as $property => $checkboxValues) { $multiCheckbox = new MultiCheckbox($this->checkboxName); $multiCheckbox->setOptions(array('inline' => false, 'value_options' => $checkboxValues)); $isParentField = strpos($checkboxValues[0]['value'], ".") !== false; if (count($checkboxValues) >= 2 || count($checkboxValues) == 1 && $isParentField) { $multiCheckbox->setLabel($property); } // Dirty hack, because this->add() does not detect element or fieldset naming conflicts $this->iterator->insert($property, $multiCheckbox, 0); } $this->add(array('name' => 'submit', 'type' => 'submit', 'label' => '<span class="glyphicon glyphicon glyphicon-refresh"></span>', 'attributes' => array('value' => 'Apply', 'class' => 'btn knopSearch'))); }