Почему не появляется мое флеш-сообщение CakePHP? - PullRequest
1 голос
/ 23 февраля 2011

Справочная информация: Я новичок в CakePHP.У меня есть небольшой тестовый сайт (в основном составленный из статических видов и контактной формы на данный момент), с которым можно поиграть, пока я учусь.На localhost все работало нормально (Apache на Ubuntu), поэтому я развернул его на учетной записи общего хостинга (предоставленной Lunarpages).Я переместил папку / cake из обычной структуры каталогов (чтобы я мог использовать ее для нескольких приложений) и соответствующим образом перенастроил пути index.php своего webroot.

Проблемы:

  1. setFlash сообщения не отображаются.Даже создание простого представления, которое не делает ничего, кроме $this->Session->setFlash('message');.Я не получаю никакого сообщения об ошибке, вспышка просто не отображается
  2. Перенаправления не работают.Например, после заполнения контактной формы я хочу $this->redirect( array( 'action' => 'success' ), null, true);, но сервер выдает ошибку:

    Предупреждение (2): невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с /routetoapp / config / rout.php: 40) [CORE / cake / libs / controller / controller.php, строка 742]

Все остальное работает так же, как и раньшена локальном хосте - перезапись URL, загрузка компонента, проверка модели.Я не знаю, связаны ли мои проблемы или отдельные проблемы

Устранение неполадок до сих пор:

  1. Я пробовал и «торт», и «php»для Configure::write('Session.save', 'val');, но ни одна из них не имела значения.
  2. Моя папка app / tmp доступна для записи.
  3. Мой шаблон макета имеет правильный код для отображения флэш-сообщений.(Точно такие же объекты M, V, C и Layout отображают ожидаемую вспышку на локальном хосте)

Я предполагаю, что упускаю что-то простое, но я новичок в этой среде, поэтому яне уверен, где еще искать.

Ответы [ 3 ]

6 голосов
/ 23 февраля 2011

См. Ответ Мэтта Хаггинса о вашей проблеме со вспышкой. Это правильно

Что касается вашей проблемы с перенаправлением,

у вас может быть дополнительный пробел или что-то в вашем файле routes.php. Убедитесь, что перед начальным тегом <?php нет пробелов, и удалите закрывающий ?>

1 голос
/ 23 февраля 2011

$this->Session->setFlash(...) используется для установки флеш-сообщения из контроллера.Когда вы находитесь в представлении, вы должны рендерить флеш-сообщение следующим образом:

<?php $session->flash(); ?>

Вы также можете сделать ваше флеш-сообщение более сложным, если вам нужно что-то вроде этого:

<?php if ($session->check('Message.flash')): ?>
    <div class="message">
        <?php $session->flash(); ?>
    </div>
<?php endif; ?>
0 голосов
/ 29 мая 2012

Это было правильно, но там также есть echo добавить до $session->flash(); итак, должно быть вроде:

<?php if ($session->check('Message.flash')): ?>
    <div class="message">
        <?php echo $session->flash(); ?>
    </div> <?php endif; ?>

это сработало для меня!

...