Рейтинг:1

Использование AJAX не работает, когда представление отображается программно

флаг in

У меня есть представление, которое отображается так

$view = Views::getView('view_id');
$view->setDisplay('block_1');
$просмотреть->выполнить();
$render = $view->render(); 
$html = \Drupal::service('renderer')->render($render);

Переменная $html возвращается в методе сборки блока.

общедоступная функция сборки () {
    возвращаемый массив(
      '#theme' => 'theme_template',
      '#view' => $html,
    );
  }

Затем выводится в файл ветки {{ Посмотреть }}

Представление визуализируется, но разбивка на страницы не использует ajax, вместо этого он перезагружает страницу со строкой запроса ?page=1

Я нашел аналогичный вопрос, но это для drupal 7: Используйте ajax, не работающий в блоке представлений, отображаемом программно

Заранее спасибо!

4uk4 avatar
флаг cn
Вы не должны рендерить слишком рано, да и не нужно, шаблоны могут печатать массивы рендеринга. Также Views уже предоставляет блочный плагин: /core/modules/views/src/Plugin/Block/ViewsBlock.php.
Stephan Sutter avatar
флаг in
Привет @4k4, спасибо за ответ! Вместо этого я попытался использовать переменную $render, но ajax все еще не используется. Я собираюсь изучить ViewsBlock, но есть ли у вас какие-либо ссылки о том, как его использовать?
No Sssweat avatar
флаг ua
`у вас есть какие-нибудь ссылки о том, как его использовать?` @StephanSutter, вы просто заходите в `/admin/structure/block` и размещаете его, как любой другой блок.Вы можете ограничить его видимость, чтобы он отображался только на определенных страницах.
Рейтинг:0
флаг ua

Попробуйте так

$view = Views::getView('view_name');
$view->setDisplay('view_machine_name');
$просмотреть->выполнить();

общедоступная функция сборки () {
    возвращаемый массив(
        '#тип' => 'вид',
        '#name' => 'view_name',
        '#вид' => $вид,
        '#display_id' => 'block_1',
        '#embed' => ИСТИНА,
        '#cache' => $view->getCacheTags(),
    );
}

Если не использовать Твиг Твик и в файле шаблона блока или страницы выполните

{{ drupal_view('view_name', 'block_1') }}

Модуль Twig Tweak предоставляет расширение Twig с некоторыми полезными функциями. и фильтры, которые могут улучшить опыт разработчиков.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.