web-dev-qa-db-ja.com

EntityQueryを備えたポケットベル

ページャークラスでページャーを作成するにはどうすればよいですか? EntityQueryクラスでこれを行う方法はどこにも見つかりませんでした。最後の10項目を表示するpager(10)があります。 <1、2、3、4、5、6>のような番号のポケットベルを作りたいです。

これは私が今持っているコードです:

class NewsArchive extends BlockBase {

  /**
   * {@inheritdoc}
   */
  public function build() {

    // Query for newest articles and return max 3 results.
    $query = \Drupal::entityQuery('node');
    $news = $query->condition('type', 'news')
      ->condition('status', 1)
      ->sort('created', 'DESC')
      ->pager(10)
      ->execute();

    // LoadMultiple News in $nodes variable
    $nodes = Node::loadMultiple($news);

    $path = base_path();

    // Return $nodes variable with name items to the module.
    return array(
      '#theme' => 'mytheme_news_archive',
      '#items' => $nodes,
      '#path'  => $path,
    );

  }
}

これは次のコードで可能であることをどこかで読みました:

      $build['pager'] = [
        '#type' => 'pager',
      ];

このビルドページャー(レンダー)はどのように私のコードに適合しますか?誰かが私に開始方法を教えてもらえますか?

5
Luc - K

結果を返すビルド配列にページャーを追加します。

  return [
    'results' => [
      '#theme' => 'mytheme_news_archive',
      '#items' => $nodes,
      '#path'  => $path,
    ],
    'pager' => [
      '#type' => 'pager',
    ],
  ];    

または、これを1つの場所でテーマにしたい場合は、変数#pagerでテーマを拡張します。

  return [
    'results' => [
      '#theme' => 'mytheme_news_archive',
      '#items' => $nodes,
      '#path'  => $path,
      '#pager' => [
        '#type' => 'pager',
      ],
    ],
  ];    

次に、ポケットベルを小枝で印刷できます。

{{ pager }}
2
4k4