client_connection-8.x-1.x-dev/modules/client_connection_example/src/Plugin/Block/ExampleBlock.php

modules/client_connection_example/src/Plugin/Block/ExampleBlock.php
<?php

namespace Drupal\client_connection_example\Plugin\Block;

use Drupal\user\Entity\User;
use Drupal\client_connection\ClientConnectionManager;
use Drupal\Core\Block\BlockBase;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Plugin\Context\Context;
use Drupal\Core\Plugin\Context\ContextDefinition;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Provides a 'ExampleBlock' block.
 *
 * @Block(
 *  id = "client_connection_example_block",
 *  admin_label = @Translation("Example Client Connection Posts Block"),
 * )
 */
class ExampleBlock extends BlockBase implements ContainerFactoryPluginInterface {

  /**
   * The Client Connection manager.
   *
   * @var \Drupal\client_connection\ClientConnectionManager
   */
  protected $clientManager;

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, ClientConnectionManager $client_manager) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->clientManager = $client_manager;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static(
      $configuration,
      $plugin_id,
      $plugin_definition,
      $container->get('plugin.manager.client_connection')
    );
  }

  /**
   * {@inheritdoc}
   */
  public function build() {
    $user = User::load(\Drupal::currentUser()->id());
    $contexts['user'] = new Context(new ContextDefinition('entity:user', t('Current User'), FALSE), $user);

    /** @var \Drupal\client_connection_example\Plugin\ClientConnection\ExampleConnection $plugin */
    $plugin = $this->clientManager->resolveInstance('example', $contexts);

    $build['inner']['#markup'] = '';

    if ($plugin && $posts = $plugin->getPosts()) {
      $post_count = 0;
      $build['inner']['#markup'] .= '<p>Here are some posts:</p>';
      $build['inner']['#markup'] .= '<ul>';
      foreach ($posts as $post) {
        if ($post_count > 5) {
          break;
        }
        $build['inner']['#markup'] .= '<li>' . $post['title'] . '</li>';
        $post_count++;
      }
      $build['inner']['#markup'] .= '</ul>';
    }
    else {
      $build['inner']['#markup'] .= '<p>No posts found</p>';
    }

    return $build;
  }

}

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

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