Typo3 8.7: передача данных между действиями с помощью redirect () не работает - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь перенаправить одно действие (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());
                }
            }
        }

Я не могу найти никаких ошибок в своем коде.Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...