Формы и вывод результатов - PullRequest
2 голосов
/ 16 мая 2010

Ну

Это вопрос новичка, но я действительно не знаю, как лучше. У меня есть базовый CRUD (Создать, Извлечь, Обновить и Удалить) в моем проекте, и я хотел бы вывести какое-нибудь сообщение, если получилось или нет, в div на той же странице.

Итак, в основном, у меня есть форма, действие которой настроено на ту же страницу, и у меня есть div # statusDiv ниже этой же формы, которую я хотел бы вывести что-то вроде Регистр включен с успехом .

Каков наилучший способ сделать это?

  • Установить флаг в контроллере $this->view->flagStatus = 'message' затем вызвать его в представлении?

Просто чтобы было понятнее. Это мой код:

//IndexController.php indexAction()

...

//Check if there's submitted data
if ($this->getRequest()->isPost()) {
    ...
    $registries->insert($data);
    $this->view->flagStatus = 'message';
}

Тогда мой взгляд:

....
<?php if ($this->flagStatus) { ?>   
    <div id="divStatus" class="success span-5" style="display: none;">
        <?php echo $this->flagStatus; ?>
    </div>
<?php } ?>
....

1 Ответ

6 голосов
/ 16 мая 2010

В этой ситуации, так как вы перенаправляете, $ this-> view-> flagStatus будет потеряно. Вместо этого вам следует использовать помощник действий flashMessenger:

http://framework.zend.com/manual/en/zend.controller.actionhelpers.html

В основном вы используете его так же, как в настоящее время, за исключением того, что вы измените:

$this->view->flagStatus = 'message';

до

$this->_helper->flashMessenger->addMessage('message');

после этого вам нужно отправить объект flashMessenger в представление. Вы должны сделать это в месте, которое выполняется при каждом запросе страницы, чтобы вы могли отправлять сообщения на любую страницу:

$this->view->flashMessenger = $this->_helper->flashMessenger;

, а затем измените ваше представление на:

<?php if($this->flashMessenger->hasMessages(): ?> 
    <div id="divStatus" class="success span-5" style="display: none;">
        <?php $messages = $this->flashMessenger->getMessages(); ?>
        <?php foreach($messages as $message): ?>
        <p><?= $message; ?></p>
        <?php endforeach; ?>
    </div>
<?php endif; ?>

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...