/** * Handle the command. */ public function handle() { $model = $this->builder->getModel(); $entries = $this->builder->getEntries(); /** * If the builder has an entries handler * then call it through the container and * let it load the entries itself. */ if (is_string($entries) || $entries instanceof \Closure) { app()->call($entries, ['builder' => $this->builder]); } $entries = $this->builder->getTableEntries(); /** * If the entries have already been set on the * table then return. Nothing to do here. * * If the model is not set then they need * to load the table entries themselves. */ if (!$entries->isEmpty() || !$model) { return; } /** * Resolve the model out of the container. */ $repository = $this->builder->getRepository(); /** * If the repository is an instance of * TableRepositoryInterface use it. */ if ($repository instanceof TableRepositoryInterface) { $this->builder->setTableEntries($repository->get($this->builder)); } }
/** * Build the rows. * * @param TableBuilder $builder */ public function build(TableBuilder $builder) { foreach ($builder->getTableEntries() as $entry) { $columns = $this->columns->build($builder, $entry); $buttons = $this->buttons->build($builder, $entry); $buttons = $buttons->enabled(); $row = compact('columns', 'buttons', 'entry'); if ($entry instanceof Model) { $row['key'] = $entry->getKey(); } $row['table'] = $builder->getTable(); $row = $this->evaluator->evaluate($row, compact('builder', 'entry')); $builder->addTableRow($this->factory->make($row)); } }