Comment vous obtenez le param sorta dépend où vous êtes,
Vous n'avez pas besoin d'attraper une requête $ param pour réaliser ce que vous voulez faire ici. Vous utilisez simplement l'assistant FlashMessenger pour ajouter un message à la pile. Vous récupérez ensuite le message dans l'action où vous souhaitez afficher le message, puis affectez-le à la vue comme je le fais dans le successAction. Gardez à l'esprit que vous pouvez passer n'importe quel $ var ou tableau de données en l'assignant dans le contrôleur comme: $ this-> view-> var = $ var; Dans la vue qui sera alors accessible comme $ this-> var.
Depuis que vous avez demandé à propos de la connexion, je vais vous montrer comment je le fais habituellement. Pas que ce soit le meilleur moyen.
point de vue de l'index de mon LoginController tient la forme:
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.';
}
}
}
}
Dans l'action de succès que nous faisons:
public function successAction() {
if ($this->_helper->getHelper('FlashMessenger')->getMessages()) {
$this->view->messages = $this->_helper
->getHelper('FlashMessenger')
->getMessages();
} else {
$this->_redirect('/login/success');
}
}
Dans le script de vue, nous pouvons faire quelque chose comme ce que j'ai ci-dessous. La raison pour laquelle je le fais de cette façon est que, parfois, je passerai un seul message dans un contrôleur, dans ce cas, j'utilise simplement:
$this->view->message = 'message goes here';
les attraper ensuite les deux si elles sont définies dans la vue:
<?php
if(isset($this->message) || isset($this->messages)):
?>
<?php
if(is_array($this->messages))
{
echo implode($this->messages);
} else {
echo $this->message;
}?>
<?php
endif
?>
Comment récupérez-vous $ params quand vous y arrivez? –