/** * @throws RuntimeException * @return Form */ public function getFilterForm() { $filters = $this->entity->getOptions()->getFilter(); if ($filters) { if (is_string($filters)) { $form = $this->serviceLocator->get($filters); } elseif (is_array($filters)) { $simple = true; foreach ($filters as $filter) { $simple = $simple && is_string($filter); } if ($simple) { $form = new Form(); $form->setAttribute('method', 'GET'); foreach ($filters as $filter) { $label = str_replace('_', ' ', $filter); $form->add(new Text($filter, ['label' => $label])); } $submit = new Button('submit', ['label' => 'Filter']); $submit->setAttribute('type', 'submit'); $form->add($submit); } else { $factory = new Factory(); $form = $factory->createForm($filters); } } else { throw new RuntimeException('Unknown type of filter'); } return $form; } return new Form(); }
/** * @param Entity $entity * @param Paginator $pagination */ public function createTable(Entity $entity, Paginator $pagination) { $table = new Table(); $table->createHead($entity->getOptions()->getFields()); $hydrator = new ClassMethods(); foreach ($pagination as $entity) { $row = $table->createRow(); foreach ($hydrator->extract($entity) as $key => $value) { $row->setValue($key, $value); } } return $table; }