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