/** * @return mixed */ public function build() { /** * @var BaseField $field * @var BaseField $clone * @var \Illuminate\Database\Eloquent\Model $items */ $indexPlanner = $this->getPlanner(); $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($indexPlanner->getCRUDMasterInstance()->getPerPage()); $this->setPaginator($items); $result = []; foreach ($items as $item) { $row = new IndexResult(); $row->setIdentifier($item->{$primaryKey}); foreach ($indexPlanner->getFields() as $field) { $clone = clone $field; $name = $clone->getName(); $value = $item->{$name}; if ($clone->hasBefore()) { $before = $clone->getBefore(); $value = $before($value); } if ($clone->checkIfMultiple()) { $value = Value::decode(Config::get('crud.multiple-serializer'), $value); $value = implode(', ', $value); } $clone->setContext(BaseField::CONTEXT_INDEX)->setRowId($item->{$primaryKey})->setValue($value); $row->addField($name, $clone); } $result[] = $row; } $this->setResult($result); }
/** * Build the list data. * * @return mixed|void */ public function build() { $formMapper = $this->getPlanner(); $model = $this->getModel(); /** @var Model $primaryKey */ $primaryKey = (new $model())->getKeyName(); /* * Empty form. * * @var FormResult */ $result = new FormResult(); if ($this->getIdentifier() === null) { /** @var BaseField $field */ foreach ($formMapper->getFields() as $field) { $clone = clone $field; $name = $clone->getName(); // Is this a multiple field? if ($clone->checkIfMultiple()) { $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->getPlanner()->getCRUDMasterInstance(), 'modifyModelItem')) { $item = $this->getPlanner()->getCRUDMasterInstance()->modifyModelItem($item); } $result = new FormResult(); $result->setIdentifier($item->{$primaryKey}); /** @var BaseField $field */ 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->checkIfMultiple()) { $value = Value::decode(Config::get('crud.multiple-serializer'), $value); } $clone->setContext(BaseField::CONTEXT_FORM)->setValue($value); $result->addField($name, $clone); } $this->setResult($result); }