Я не думаю, что текущие ответы являются хорошим подходом к флеш-сообщениям в целом.
Все приложение должно просто иметь $this->setFlash('my message');
, и родительское представление или макет должны решить, как его отобразить (даже если оно использует элемент).
Следующий код должен быть в макете, возможно, в разделе <head>
.
<?php
$flashMessage = $this->Session->flash();
if ( $flashMessage !== false) {
echo $this->element('my_custom_flash_element', array(
'message' => $flashMessage
));
}
?>
Компоновка захватывает его и передает флэш-сообщение как переменную в элемент 'my_custom_flash_element'.
Внутри элемента вы можете иметь любой причудливый рендеринг с помощью CSS и даже такие классные вещи, как toastr.js (который я лично люблю!)
Пример: (my_custom_flash_element.ctp)
<script>
$(document).ready(function() {
<?php echo "toastr.warning('" . $message . "');"; ?>
});
</script>
Также ознакомьтесь с этой замечательной концепцией в переходных флеш-сообщениях от @dereuromark