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',
]]
);
}
}
Надеюсь, мои объяснения достаточно ясны.
Заранее благодарю за помощь.