tv-1.0.x-dev/src/Controller/TvController.php

src/Controller/TvController.php
<?php

namespace Drupal\tv\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Symfony\Component\HttpFoundation\JsonResponse;

/**
 * Returns responses for Node routes.
 */
class TvController extends ControllerBase implements ContainerInjectionInterface {
    public function getChannels(): JsonResponse
    {
        $items = $this->getItems();
        return new JsonResponse([
            'title' => 'TV Channels',
            'method' => 'GET',
            'status'=> JsonResponse::HTTP_OK,
            'channels' => $items,
        ], JsonResponse::HTTP_OK);
    }

    private function getItems(): array
    {
        $channels = [];

        // Load all tv_channel nodes.
        $query = \Drupal::entityQuery('node')
            ->condition('type', 'tv_channel')
            ->condition('status', 1)
            ->sort('title')
            ->accessCheck();

        foreach ($query->execute() as $nid) {
            $node = \Drupal\node\Entity\Node::load($nid);
            $channels[] = [
                'id' => (int) $node->id(),
                'title' => $node->getTitle(),
                // @todo 'posterUrl' => $node->field_poster->entity->getFileUri(),
                'playlist' => $node->toUrl()->toString() . '/playlist',
            ];
        }
        return $channels;
    }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc