kostmann
(Mark Kostmann)
November 18, 2022, 7:50pm
1
Hallo zusammen,
ich bin es wieder. Mein aktuelles Problem ist, dass ich im Controller mittels assign eine Nachricht ans Template übergeben möchte:
if($newPost->getGender() === ''){
$this->view->assign('msg','Bitte eine Anrede auswählen.');
$this->view->assign('msgEnglish','Please select a salutation.');
$this->redirect('Organisations');
}
Im Template existiert kein msg oder msgEnglish. Was muss ich machen, damit ich die Nachricht ins Template anzeigen kann?
Vielen Dank.
LG Mark
ReneC
(Rene Rehme)
November 24, 2022, 11:09am
2
Hi,
Du versuchst hier Werte an ein Template zu übergeben, welches nicht abgerufen wird, da du via $this->redirect('Organisations')
im selben Zuge ein Redirect auf eine andere Action machst. Du musst also in OrganisationsAction()
deine Werte ins Template übergeben.
Tip:
Du kannst die Werte z.B. so in eine andere Action übergeben:
$msg = 'Bitte eine Anrede auswählen.';
$msgEnglish = 'Please select a salutation.';
$this->redirect('Organisations', null, null, array('msg' => $msg, 'msgEnglish' => $msgEnglish));
Deine OrganisationsAction() könnte in diesem Beispiel dann so aussehen:
/**
* @param string $msg
* @param string $msgEnglish
*/
public function OrganisationsAction(string $msg = '', string $msgEnglish = '') {
$this->view->assign('msg', $msg);
$this->view->assign('msgEnglish', $msgEnglish);
}
Nachtrag:
Du kannst dir mal Flash Messages anschauen:
https://flowframework.readthedocs.io/en/stable/TheDefinitiveGuide/PartIII/ModelViewController.html?highlight=flash#flash-messages
Die musst du nicht extra übergeben und werden auch nach einem redirect im Template ausgespielt.
Gruß,
Rene
1 Like