Как проверить, пуст ли набор флэш-сообщений в cakephp

У меня есть форма входа, и я устанавливаю флэш-сообщение о недопустимом входе в систему, например, в контроллере:

$this->Session->setFlash(__('Invalid username or password'));

И отображение сообщения, как показано ниже, в файле ctp:

<div id="error" >
<?php
echo $this->Session->flash();
?> 
</div>

CSS для div выглядит следующим образом:

    #error {
    padding:10px;
    display:inline-block;
    margin-right: 18px;
    font-size:16px;
    font-weight:600;
    position:relative;
    top:20px;
    }

При загрузке страницы отображается пустое флеш-сообщение. Как проверить, пуст ли $this->Session->flash();, и отображать div только в том случае, если он не пуст?

Когда сообщение пустое, флеш-сообщение при загрузке страницы выглядит так:

Если сообщение пустое, флеш-сообщение при загрузке страницы выглядит так:

Аналогично это выглядит, когда сообщение установлено:

Похожим образом это сообщение выглядит так:


person Varuni N R    schedule 21.12.2016    source источник
comment
Зачем в .ctp просто отображать его из метода контроллера.   -  person aavrug    schedule 21.12.2016
comment
Мне нужен индивидуальный дизайн для этого   -  person Varuni N R    schedule 21.12.2016
comment
Как это сделать ??   -  person Varuni N R    schedule 21.12.2016
comment
Подпишитесь на book.cakephp.org/2.0/en/tutorials-and-examples/   -  person aavrug    schedule 21.12.2016
comment
Я пробовал это, но это не сработало, как ожидалось   -  person Varuni N R    schedule 21.12.2016
comment
Итак, есть ли возможность проверить, пусто ли флэш-сообщение ??   -  person Varuni N R    schedule 21.12.2016
comment
Сначала попробуйте выполнить отладку в части else и посмотрите, будет ли ваш метод работать с else. Затем вы можете отлаживать $this-›Session.   -  person aavrug    schedule 21.12.2016
comment
Я это тоже проверил.   -  person Varuni N R    schedule 21.12.2016
comment
@aavrug Проверьте скриншоты, которые я добавил.   -  person Varuni N R    schedule 21.12.2016
comment
Давайте продолжим обсуждение в чате.   -  person aavrug    schedule 21.12.2016
comment
Только не устанавливайте пустое флеш-сообщение. Вы пытаетесь обойти проблему, которую создали сами. Поэтому исправьте реальную проблему и исправьте настройку пустого флеш-сообщения вместо того, чтобы обойти проблему.   -  person floriank    schedule 21.12.2016


Ответы (1)


Попробуй это:

Создайте свои пользовательские элементы с оповещением об ошибке, оповещением об успешном завершении и т. д.

/View/Elements/error_alert.ctp

<!-- Example Bootstrap Error Alert -->
<div class="alert alert-danger">
    <button type="button" class="close" data-dismiss="alert">&times;</button>
    <strong><?php echo $message ?></strong>
</div>

/View/Elements/success_alert.ctp

<!-- Example Bootstrap Succes Alert -->
<div class="alert alert-success">
    <button type="button" class="close" data-dismiss="alert">&times;</button>
    <strong><?php echo $message ?></strong>
</div>

Добавьте это в свои представления. Оно появляется только тогда, когда должно отображаться сообщение.

 <!-- It´s will work for all alert types (not only for error alerts) -->
<div class="col-md-12">
    <?php echo $this->Session->flash(); ?> 
</div>

если вы хотите использовать один, добавьте это в свои контроллеры:

Предупреждение об успешном завершении

$this->Session->setFlash('Success message!', 'success_alert');

Для предупреждения об ошибке

$this->Session->setFlash('Error message!', 'error_alert');
person Jacek B Budzynski    schedule 21.12.2016
comment
Спасибо. Это правильный ответ. Но я переопределил стиль по умолчанию. - person Varuni N R; 21.12.2016