/** * Build the list data. * * @access public * @return mixed|void */ public function build() { $listMapper = $this->getMapper(); $model = $this->getModel(); $items = $model::with([]); $primaryKey = (new $model())->getKeyName(); // Field ordering if (Input::has('_order_by')) { $items->orderBy(Input::get('_order_by'), Input::get('_order')); } // Field filters foreach (Input::all() as $key => $value) { if (empty($value) || substr($key, 0, 1) == '_' || $key == 'page') { continue; } $items->where($key, 'LIKE', '%' . $value . '%'); } // Result scopes if (Input::has('_scope')) { $items->{Input::get('_scope')}(); } $items = $items->paginate($listMapper->getAdmin()->getPerPage()); $this->setPaginator($items); $result = []; foreach ($items as $item) { $row = new ListResult(); $row->setIdentifier($item->{$primaryKey}); foreach ($listMapper->getFields() as $field) { $clone = clone $field; $name = $clone->getName(); $value = $item->{$name}; if ($clone->hasBefore()) { $before = $clone->getBefore(); $value = $before($value); } if ($clone->isMultiple()) { $value = Value::decode(Config::get('bauhaus::admin.multiple-serializer'), $value); $value = implode(', ', $value); } $clone->setContext(BaseField::CONTEXT_LIST)->setRowId($item->{$primaryKey})->setValue($value); $row->addField($name, $clone); } $result[] = $row; } $this->setResult($result); }
/** * Build the list data. * * @access public * @return mixed|void */ public function build() { $formMapper = $this->getMapper(); $model = $this->getModel(); $primaryKey = (new $model())->getKeyName(); /** * Empty form */ $result = new FormResult(); if ($this->getIdentifier() === null) { foreach ($formMapper->getFields() as $field) { $clone = clone $field; $name = $clone->getName(); // Is this a multiple field? if ($clone->isMultiple()) { $clone->setValue(['']); } $clone->setContext(BaseField::CONTEXT_FORM); $result->addField($name, $clone); } $this->setResult($result); return; } $items = $model::with([]); $items->where($primaryKey, $this->getIdentifier()); $item = $items->first(); // modifyModelItem hook if (method_exists($this->getMapper()->getAdmin(), 'modifyModelItem')) { $item = $this->getMapper()->getAdmin()->modifyModelItem($item); } $result = new FormResult(); $result->setIdentifier($item->{$primaryKey}); foreach ($formMapper->getFields() as $field) { $clone = clone $field; $name = $clone->getName(); $value = $item->{$name}; if ($clone->hasBefore()) { $before = $clone->getBefore(); if ($before instanceof Closure) { $value = $before($value); } else { $value = $before; } } // Is this a multiple field? if ($clone->isMultiple()) { $value = Value::decode(Config::get('bauhaus::admin.multiple-serializer'), $value); } $clone->setContext(BaseField::CONTEXT_FORM)->setValue($value); $result->addField($name, $clone); } $this->setResult($result); }