Я динамически загружаю контент в мои модалы, и часто это будет страница, которая уже является нормально доступной страницей на моем сайте.
Итак, я хочу иметь возможность повторно использовать этот контроллер / действие и загрузить его в мой модальный режим, но, очевидно, контроллер уже использует макет. Поэтому, когда я загружаю страницу в мой модал, верхний и нижний колонтитулы моего сайта снова в модале, что мне не нужно.
Одно из решений, которое я подумал, может сработать, но выглядит как грязный обходной путь, - иметь в моем Appcontroller проверку для параметра URL, который говорит, что это модальный вызов для страницы (не обычный вызов). Затем он переопределяет макет специальным модальным.
//app_controller.php
public function beforeRender() {
if (isset($this->params['passed']['_modal'])) {
$this->layout = 'modal';
}
}
// In my jQuery call to open the modal:
myModal.load('users/view/5/_modal').dialog('open');
Тогда в макет modal.ctp
я бы включил таблицу стилей, которая выглядит примерно так:
// modal_layout.css
@import url("normal_layout.css");
.header, .footer {display:none;}
Так что мне не нужно переопределять весь CSS моего обычного макета, но я могу просто скрыть части, которые я не хочу показывать.
Это кажется немного глупым способом сделать это, и я не знаю, работает ли он вообще, но наверняка кто-то уже делал это раньше с CakePHP, так что вы, ребята, предложите?