Beispiel #1
0
 /**
  * @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);
 }
Beispiel #2
0
 /**
  * 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);
 }