Bolt\Twig\Handler\RecordHandler::current PHP Метод

current() публичный Метод

If we're on page/foo, and content is that page, you can use {% is page|current %}class='active'{% endif %}
public current ( Content | array $content ) : boolean
$content Bolt\Legacy\Content | array
Результат boolean True if the given content is on the curent page.
    public function current($content)
    {
        /** @var Request $request */
        $request = $this->app['request'];
        $requestUri = $request->getRequestUri();
        $routeParams = $request->get('_route_params');
        // If passed a string, and it is in the route.
        if (is_string($content) && in_array($content, $routeParams)) {
            return true;
        }
        if (is_array($content) && isset($content['link'])) {
            $linkToCheck = $content['link'];
        } elseif ($content instanceof \Bolt\Legacy\Content) {
            $linkToCheck = $content->link();
        } else {
            $linkToCheck = (string) $content;
        }
        // check against Request Uri
        if ($requestUri === $linkToCheck) {
            return true;
        }
        // No contenttypeslug or slug -> not 'current'
        if (empty($routeParams['contenttypeslug']) || empty($routeParams['slug'])) {
            return false;
        }
        // check against simple content.link
        if ('/' . $routeParams['contenttypeslug'] . '/' . $routeParams['slug'] === $linkToCheck) {
            return true;
        }
        if (!isset($content['contenttype'])) {
            return false;
        }
        // if the current requested page is for the same slug or singularslug.
        $ct = $content['contenttype'];
        if ($routeParams['contenttypeslug'] === $ct['slug'] || $routeParams['contenttypeslug'] === $ct['singular_slug']) {
            // …and the slugs should match.
            return $routeParams['slug'] === $content['slug'];
        }
        return false;
    }

Usage Example

Пример #1
0
 public function testCurrentFalse()
 {
     $app = $this->getApp();
     $app->flush();
     $this->addDefaultUser($app);
     $this->addSomeContent();
     $request = (new Request())->create('/gum-tree/koala');
     $request->query->set('_route_params', ['zone' => 'frontend', 'slug' => 'koala', 'contenttypeslug' => 'gum-tree']);
     $app['request'] = $request;
     $handler = new RecordHandler($app);
     $content = ['slug' => 'clippy'];
     $result = $handler->current($content);
     $this->assertFalse($result);
 }