Come si ottiene il param dipende da dove ti trovi,
Non devi prendere una richiesta $ param per ottenere quello che vuoi fare qui. Stai semplicemente utilizzando l'helper FlashMessenger per aggiungere un messaggio allo stack. Quindi si recupera il messaggio all'interno dell'azione in cui si desidera visualizzare il messaggio, quindi assegnarlo alla vista come faccio in SuccessAction. Tieni presente che puoi trasferire qualsiasi $ var o matrice di dati assegnandoli nel controller come: $ this-> view-> var = $ var; All'interno della vista che sarà quindi accessibile come $ this-> var.
Poiché hai chiesto informazioni sul login, ti mostrerò come faccio di solito. Non è il modo migliore.
vista indice di mio LoginController detiene il modulo:
public function indexAction() {
$form = new Zfcms_Form_Login;
$this->view->form = $form;
/*check for valid input
authenticate using adapter
persist user record to session
redirect to original request URL if present*/
if ($this->getRequest()->isPost()) {
if ($form->isValid($this->getRequest()->getPost())) {
$values = $form->getValues();
$authAdapter = $this->getAuthAdapter();
# get the username and password from the form
$username = $values['username'];
$password = $values['password'];
# pass to the adapter the submitted username and password
$authAdapter->setIdentity($username)
->setCredential($password);
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter);
if ($result->isValid()) {
# all info about this user from the login table
# ommit only the password, we don't need that
$userInfo = $authAdapter->getResultRowObject(null, 'password');
# the default storage is a session with namespace Zend_Auth
$authStorage = $auth->getStorage();
$authStorage->write($userInfo);
$session = new Zend_Session_Namespace('zfcms.auth');
if (isset($session->requestURL)) {
$url = $session->requestURL;
unset($session->requestURL);
$this->_redirect($url);
} else {
$this->_helper->getHelper('FlashMessenger')
->addMessage('You were successfully logged in as ' . $userInfo->username);
$this->_redirect('/login/success');
}
} else {
$this->view->message = 'You could not be logged in. Please try again.';
}
}
}
}
Nell'azione successo facciamo questo:
public function successAction() {
if ($this->_helper->getHelper('FlashMessenger')->getMessages()) {
$this->view->messages = $this->_helper
->getHelper('FlashMessenger')
->getMessages();
} else {
$this->_redirect('/login/success');
}
}
Nello script vista possiamo fare qualcosa di simile a quello che ho qui di seguito. La ragione per cui lo faccio in questo modo è che a volte io passerò solo un singolo messaggio in un controllore, in questo caso ho semplicemente usare:
$this->view->message = 'message goes here';
poi prendere tutti e due se sono impostati nella visualizzazione:
<?php
if(isset($this->message) || isset($this->messages)):
?>
<?php
if(is_array($this->messages))
{
echo implode($this->messages);
} else {
echo $this->message;
}?>
<?php
endif
?>
Come recuperi $ param quando arrivi? –