В Yii (обе версии) для флеш-сообщений у нас есть методы, такие как: hasFlash
для проверки наличия флеш-сообщения заранее и getFlash
для получения содержимого определенного флеш-сообщения ...
В Yii 1x я бы сказал что-то вроде этого (в контроллере или в представлении):
Вид:
<?php if(Yii::app()->user->hasFlash('success')): ?>
<div class="alert alert-success">
<?=Yii::app()->user->getFlash('success'); ?>
</div>
<?php endif; ?>
Контроллер:
if($something->happend()) {
Yii::app()->user->setFlash('success', 'You\'ve done something wonderful.');
return $this->redirect('/elsewhere');
}
В CakePHP 3 это кажется невозможным, поскольку единственное, что я могу сделать, это установить Flash-сообщение:
$this->Flash->set('Welcome, to the real world.', [
'element' => 'success',
]);
Нет никаких методов get
или has
для сообщений Flash или чего-либо подобного, что я мог бы найти, связанного с FlashComponent и FlashHelper классами.
Еще одна особенность этой реализации Flash-сообщений в CakePHP 3 - это способ рендеринга и показа их посетителю; Вы просто говорите следующее в ваших представлениях / макете:
<?= $this->Flash->render(); ?>
Этот метод фактически выполняет рендеринг, проверяя, существует ли флэш-память, что угодно ... и все, что мне нужно, это проверить, отправлено / существует ли флэш-сообщение, а затем сделать что-то еще в макете. Теперь это кажется мне невозможным, или я не смотрю в правильном направлении.
Я бы отметил, что это очень странная и плохая реализация Flash-сообщений в CakePHP 3 ...
Наконец, вопрос:
Как проверить, существует ли сообщение Flash, в виде или в контроллере?