コード例 #1
0
 /**
  * Handle the command.
  */
 public function handle()
 {
     $model = $this->builder->getModel();
     /*
      * If the builder has an entries handler
      * then call it through the container and
      * let it load the entries itself.
      */
     if ($handler = $this->builder->getTreeOption('entries')) {
         app()->call($handler, ['builder' => $this->builder]);
         return;
     }
     $entries = $this->builder->getTreeEntries();
     /*
      * If the entries have already been set on the
      * tree then return. Nothing to do here.
      *
      * If the model is not set then they need
      * to load the tree entries themselves.
      */
     if (!$entries->isEmpty() || !$model) {
         return;
     }
     /*
      * Resolve the model out of the container.
      */
     $repository = $this->builder->getTreeRepository();
     /*
      * If the repository is an instance of
      * TreeRepositoryInterface use it.
      */
     if ($repository instanceof TreeRepositoryInterface) {
         $this->builder->setTreeEntries($repository->get($this->builder));
     }
 }
コード例 #2
0
 /**
  * Build the items.
  *
  * @param TreeBuilder $builder
  */
 public function build(TreeBuilder $builder)
 {
     foreach ($builder->getTreeEntries() as $entry) {
         $segments = $this->segments->build($builder, $entry);
         $buttons = $this->buttons->build($builder, $entry);
         $buttons = $buttons->enabled();
         $id = $entry->getId();
         $parent = $entry->{$builder->getTreeOption('parent_segment', 'parent_id')};
         $item = compact('builder', 'segments', 'buttons', 'entry', 'parent', 'id');
         $item = $this->evaluator->evaluate($item, compact('builder', 'entry'));
         $builder->addTreeItem($this->factory->make($item));
     }
 }