Тип Flash Messenger в Zend - PullRequest
       1

Тип Flash Messenger в Zend

15 голосов
/ 17 октября 2010

Возможно ли это или как я могу дать тип FlashMessage в Zend?

Например

/* This is a "Success" message */
$this -> _helper -> FlashMessenger('You are successfully created a post.'); 

/* This is an "Error" message  */
$this -> _helper -> FlashMessenger('There is an error while creating post.');

/* This is just a "Notification" message */
$this -> _helper -> FlashMessenger('Now you can see your Post');

Ответы [ 4 ]

21 голосов
/ 17 октября 2010

Я думаю, что лучший способ сделать это - использовать пространства имен flashmessenger:

/* success message */
$this->_helper->FlashMessenger()->setNamespace('success')->addMessage('Post created!');

/* error message */
$this->_helper->FlashMessenger()->setNamespace('error')->addMessage('You have no permissions');

И тогда в вашем макете вы можете добавлять сообщения в каждое пространство имен:

<?php $flashMessenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger');

<?php if ($flashMessenger->setNamespace('success')->hasMessages()): ?>
    <div class="message success">
    <?php foreach ($flashMessenger->getMessages() as $msg): ?>
        <?php echo $msg ?>
    <?php endforeach; ?>
    </div>
<?php endif; ?>

<?php if ($flashMessenger->setNamespace('error')->hasMessages()): ?>
    <div class="message error">
    <?php foreach ($flashMessenger->getMessages() as $msg): ?>
        <?php echo $msg ?>
    <?php endforeach; ?>
    </div>
<?php endif; ?>
3 голосов
/ 17 октября 2010

Это возможно. Пример реализации описан в этом блоге:

Выдержка:

class AuthController extends Zend_Controller_Action {
  function loginAction() {
    . . .
    if ($this->_request->isPost()) {
      $formData = $this->_request->getPost();
      if ($this->view->form->isValid($formData)) {
        . . .
      } else {
        $this->view->priorityMessenger('Login failed.', 'error');
      }
    . . .
  }
}
3 голосов
/ 17 октября 2010

Когда-то вы использовали для этого ассоциированные массивы ... Я не прав, если это все еще актуально или нет ...

/* This is a "Success" message */
$this -> _helper -> FlashMessenger(array('success' => 'You are successfully created a post.')); 

/* This is an "Error" message  */
$this -> _helper -> FlashMessenger(array('error' => 'There is an error while creating post.'));

/* This is just a "Notification" message */
$this -> _helper -> FlashMessenger(array('notice' => 'Now you can see your Post'));
0 голосов
/ 11 февраля 2015

Сигнатуры методов в Zend Framework 1.12.x для FlashMessenger:

public function addMessage($message, $namespace = null)
public function getMessages($namespace = null)
public function hasMessages($namespace = null)
public function clearMessages($namespace = null)

Таким образом, для установки сообщений будет работать следующее:

/* success message */
$this->_helper->flashMessenger()->addMessage('Post created!', 'success');

/* error message */
$this->_helper->flashMessenger()->addMessage('You have no permissions', 'error');

А для представления должно работать следующее:

<?php $flashMessenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger');

<?php if ($flashMessenger->hasMessages('success')): ?>
    <div class="message success">
    <?php foreach ($flashMessenger->getMessages('success') as $msg): ?>
        <?php echo $msg ?>
    <?php endforeach; ?>
    </div>
<?php endif; ?>

<?php if ($flashMessenger->hasMessages('error')): ?>
    <div class="message error">
    <?php foreach ($flashMessenger->getMessages('error') as $msg): ?>
        <?php echo $msg ?>
    <?php endforeach; ?>
    </div>
<?php endif; ?>
...