а потом окажется, что один компонент выводит совершенно валидное сообщение, но есть второй компонент, который тоже выводит сообщение, но должен убрать сообщение первого, ибо он переопределил поведение...
Ожидается, что код поделен на слои. И сообщения вылезают на последней стадии - рендеринг. При четком делении слоев бизнеслогики и рендеринга нет описанных тобой проблем.
а потом окажется, что один компонент выводит совершенно валидное сообщение, но есть второй компонент, который тоже выводит сообщение, но должен убрать сообщение первого, ибо он переопределил поведение...
По хорошему должны отработать оба компонента и потом уже когда известен результат кидается сообщение в стэк.
А не можешь, у тебя уже комопненты кидают сообщения... менять компоненты ты не можешь, ибо одна из них или обе - используются в других местах и там это сообщение нужно
В момент обработки запроса работает 1 контроллер, а точнее конкретный экшн. Моделей может быть много, но вызываешь их из конкретного экшена конкретного контроллера. И уже потом отдаешь все на рендеринг.
Короче, так или иначе - сообщения должны собиратся в точке выхода... и не через сессии, а через состояния моделей / сервисов... а если у тебя все собирается в одной точке, то нахрена флеш, если дальше ты все-равно пойдешь на рендер...
А не можешь, у тебя уже комопненты кидают сообщения... менять компоненты ты не можешь, ибо одна из них или обе - используются в других местах и там это сообщение нужно
Значит в контроллере проверяй результат отработки модели и выводи сообщение.