Drupal 8 |在模态窗口中启用了暴露的滤镜和Ajax的视图

时间:2018-11-12 14:16:11

标签: ajax drupal-8 drupal-views

Bonjour

我按照以下过程创建了一个自定义模式窗口: https://befused.com/drupal/modal-module。 效果很好!

我的目标是在此模式窗口中显示带有暴露滤镜的视图。视图上启用了“使用AJAX”选项。

模式窗口中的视图显示效果很好,但是,当我使用上下文过滤器时,将刷新页面而不是使用AJAX。

如果我在管理主题中将带有链接到模态窗口的链接的块放置在七个位置,则一切正常(使用了ajax),但不适用于网站的主要主题。

我使用基于bootstrap_barrio的自定义主题。

以下是不同的元素:

文件mymodule.routing.yml

mymodule.search.modal:
    path: '/mymodule/search/modal'
    defaults:
        _controller: '\Drupal\mymodule\Controller\SearchController::modal'
        _title: 'Search'
    requirements:
        _permission: 'access content'

文件SearchController.php

public function modal() {

    $view = Views::getView('mysearch_view');
    $view->preview('page_1');

    $options = [
        'dialogClass' => 'popup-dialog-class',
        'width' => '50%',
    ];
    $response = new AjaxResponse();
    $response->addCommand(new OpenModalDialogCommand(
        t('Search'), 
        $view->render(), 
        $options
    ));

    return $response;
}

ModalSearchBlock文件

class ModalSearchBlock extends BlockBase {
    /**
     * {@inheritdoc}
     */
    public function build() 
    {
        $link_url = Url::fromRoute('mymodule.search.modal');
        $link_url->setOptions([
            'attributes' => [
                'class' => ['use-ajax', 'button', 'button--small'],
                'data-dialog-type' => 'modal',
                'data-dialog-options' => Json::encode(['width' => 400]),
            ]
        ]);

        return array(
            '#type' => 'markup',
            '#markup' => Link::fromTextAndUrl(t('Search'), $link_url)->toString(),
            '#attached' => ['library' => [
                'core/drupal.dialog.ajax',
                'core/views.ajax',
            ]]
        );
    }
}

我希望我的解释很清楚。 预先感谢您的帮助。

0 个答案:

没有答案