Cake\ElasticSearch\View\Form\DocumentContext::entity PHP Method

entity() protected method

Get the entity that is closest to $path.
protected entity ( array $path ) : Cake\Datasource\EntityInterface | false
$path array The to get an entity for.
return Cake\Datasource\EntityInterface | false The entity or false.
    protected function entity($path)
    {
        if ($path === null) {
            return $this->_context['entity'];
        }
        $oneElement = count($path) === 1;
        if ($oneElement && $this->_isCollection) {
            return false;
        }
        $entity = $this->_context['entity'];
        if ($oneElement) {
            return $entity;
        }
        if ($path[0] === $this->_rootName) {
            $path = array_slice($path, 1);
        }
        $len = count($path);
        $last = $len - 1;
        for ($i = 0; $i < $len; $i++) {
            $prop = $path[$i];
            $next = $this->getProp($entity, $prop);
            $isLast = $i === $last;
            if (!$isLast && $next === null && $prop !== '_ids') {
                return false;
            }
            $isTraversable = is_array($next) || $next instanceof Traversable || $next instanceof Document;
            if ($isLast || !$isTraversable) {
                return $entity;
            }
            $entity = $next;
        }
        throw new RuntimeException(sprintf('Unable to fetch property "%s"', implode(".", $path)));
    }