📜  drupal 9 如何使用参数从渲染数组渲染视图块 - PHP (1)

📅  最后修改于: 2023-12-03 15:14:48.328000             🧑  作者: Mango

使用参数渲染视图块

在 Drupal 9 中,我们可以使用参数从渲染数组渲染视图块。我们可以定义要显示的视图以及显示视图时要使用的参数。以下是具体步骤:

  1. 在主题的 .theme 文件中,创建一个函数,此函数将返回一个渲染数组,其中包含要显示的视图块和要使用的参数。示例代码如下:
/**
 * Implements hook_preprocess_block().
 */
function my_theme_preprocess_block(&$variables) {
  // Check if the block is a view block.
  if (isset($variables['elements']['content']['#view_id']) && isset($variables['elements']['content']['#view_display_id'])) {
    // Define the view and display.
    $view_id = $variables['elements']['content']['#view_id'];
    $view_display_id = $variables['elements']['content']['#view_display_id'];
    // Define the arguments.
    $args = [
      'my_argument' => 'my_value',
    ];
    // Load the view.
    $view = Views::getView($view_id);
    // Set the display.
    $view->setDisplay($view_display_id);
    // Set the arguments.
    $view->setArguments($args);
    // Render the view.
    $variables['content'] = $view->render();
  }
}
  1. 在上面的示例代码中,我们使用了 $args 数组来定义要传递给视图的参数。在视图中,我们可以通过使用参数占位符来获取传递的参数,并根据参数显示相应的内容。例如,在 Views 中,我们可以在“Contextual filters”部分中添加参数占位符,并将其作为筛选器使用。

  2. 最后,我们可以在主题的模板文件中使用 $content 变量来显示渲染的视图块。例如,在 block.html.twig 文件中:

<div{{ attributes }}>
  {{ content }}
</div>

按照上面的步骤可以从渲染数组渲染视图块,并通过定义参数来控制视图的显示。