Wie Sie die param erhalten hängt davon ab, wo Sie sind,
Sie müssen keine Anfrage $ param zu erreichen, was Sie hier tun wollen. Sie verwenden nur den FlashMessenger-Helper, um dem Stapel eine Nachricht hinzuzufügen. Sie rufen dann die Nachricht in der Aktion ab, in der Sie die Nachricht anzeigen möchten, und weisen sie dann wie in der successAction der Ansicht zu. Beachten Sie, dass Sie ein beliebiges $ var- oder Datenfeld übergeben können, indem Sie es im Controller wie folgt zuweisen: $ this-> view-> var = $ var; In der Ansicht wird dann auf $ this-> var zugegriffen.
Da Sie nach dem Login gefragt haben, werde ich Ihnen zeigen, wie ich es normalerweise mache. Nicht dass es der beste Weg ist.
Mein LoginController Index Ansicht hält die Form:
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.';
}
}
}
}
Im Erfolg Aktion, die wir dies tun:
public function successAction() {
if ($this->_helper->getHelper('FlashMessenger')->getMessages()) {
$this->view->messages = $this->_helper
->getHelper('FlashMessenger')
->getMessages();
} else {
$this->_redirect('/login/success');
}
}
Im View Skript wir so etwas wie tun kann, was ich unten haben. Der Grund, warum ich es auf diese Weise zu tun ist, dass manchmal werde ich nur eine einzelne Nachricht in einer Steuerung übergeben, in diesem Fall habe ich einfach nutzen:
$this->view->message = 'message goes here';
Dann fangen sie beide, wenn sie in der Ansicht festgelegt sind:
<?php
if(isset($this->message) || isset($this->messages)):
?>
<?php
if(is_array($this->messages))
{
echo implode($this->messages);
} else {
echo $this->message;
}?>
<?php
endif
?>
Wie erhalten Sie $ params wenn Sie dort ankommen? –