Drupal 8 | Представления с открытым фильтром и включенным ajax в модальном окне - PullRequest
0 голосов
/ 12 ноября 2018

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'

File 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',
            ]]
        );
    }
}

Надеюсь, мои объяснения достаточно ясны. Заранее благодарю за помощь.

...