Я пытаюсь перенаправить с одного действия (createAction()
) к другому действию (editAction()
) внутри того же контроллера) и передать объект модели в виде массива.
Как это:
$this->redirect('edit', 'Checklist', NULL, array('checklist' => $newChecklist));
Я использовал всю информацию, приведенную в Передача данных в redirect () — Typo3 но в действии, которому я передаю свой объект, все атрибуты объекта пусты (NULL или пустые строки).
Здесь полный код контроллера относительно двух действий.
/**
* action create
*
* @param \bli\bla\Domain\Model\Checklist $newChecklist
* @return void
*/
public function createAction(\bli\bla\Domain\Model\Checklist $newChecklist) {
if (TYPO3_MODE == 'BE') {
$this->addFlashMessage('', \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('flash-message-create-sucessfull', $this->extensionName), \TYPO3\CMS\Core\Messaging\FlashMessage::OK);
$this->checklistRepository->add($newChecklist);
$persistenceManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager');
$persistenceManager->persistAll();
/*$newChecklist is full at this point*/
$this->redirect('edit', 'Checklist', NULL, array('checklist' => $newChecklist));
} else {
if ($this->checkLogin()) {
$this->addFlashMessage('', \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('flash-message-create-sucessfull', $this->extensionName), \TYPO3\CMS\Core\Messaging\FlashMessage::OK);
$this->checklistRepository->add($newChecklist);
$persistenceManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager');
$persistenceManager->persistAll();
$this->redirect('edit', 'Checklist', NULL, array('checklist' => $newChecklist));
} else {
$this->redirect('notLoggedIn', 'Checklist', NULL, array());
}
}
}
/**
* action edit
*
* @param \bli\bla\Domain\Model\Checklist $checklist
* @ignorevalidation $checklist
* @return void
*/
public function editAction(\bli\bla\Model\Checklist $checklist) {
/*AT THIS POINT, $checklist is empty (NULL or Empty Strings)*/
if (TYPO3_MODE == 'BE') {
//clear cache
$this->cacheService->clearPageCache(intval($GLOBALS['TSFE']->id));
$this->view->assign('checklist', $checklist);
$this->view->assign('chapters', $checklist->getChapter()->toArray());
} else {
if ($this->checkLogin()) {
//clear cache
$this->cacheService->clearPageCache(intval($GLOBALS['TSFE']->id));
$this->view->assign('scopeTypes', $this->scopeTypeRepository->findAll());
$this->view->assign('checklist', $checklist);
$this->view->assign('chapters', $checklist->getChapter()->toArray());
} else {
$this->redirect('notLoggedIn', 'Checklist', NULL, array());
}
}
}
Я не могу найти никаких ошибок в моем коде.
Заранее спасибо.
Задача ещё не решена.
Других решений пока нет …