Bei meiner Extension wollte ich zum Erstellen neuer Objekte mit einem Object Manager arbeiten.
Dazu bin ich in meinem Controller analog zu dem Beispiel von forge.typo3.org vorgegangen. Hier ist noch der Link dazu:
http://forge.typo3.org/projects/typo3v4-mvc/wiki/Dependency_Injection_%28DI%29
Mein betroffener Controller sieht folgendermaßen aus:
<?php
namespace TYPO3\Survey\Controller;
/**
*
*
* @package survey
* @license http://www.gnu.org/licenses/gpl.html GNU General Public License, version 3 or later
*
*/
class SurveyController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
/**
* @var Tx_Extbase_Object_ObjectManagerInterface
*/
protected $objectManager;
/**
* Injects the object manager
*
* @param Tx_Extbase_Object_ObjectManagerInterface $objectManager
* @return void
*/
public function injectObjectManager(Tx_Extbase_Object_ObjectManagerInterface $objectManager) {
$this->objectManager = $objectManager;
}
/**
* surveyRepository
*
* @var \TYPO3\Survey\Domain\Repository\SurveyRepository
* @inject
*/
protected $surveyRepository;
/**
* action list
*
* @return void
*/
public function listAction() {
$surveys = $this->surveyRepository->findAll();
$this->view->assign('surveys', $surveys);
}
/**
* action show
*
* @param \TYPO3\Survey\Domain\Model\Survey $survey
* @return void
*/
public function showAction(\TYPO3\Survey\Domain\Model\Survey $survey) {
$newSession = $this->objectManager->create('Tx_Survey_Domain_Model_Session');
for ($i = 1; $i <= $survey->getQuestions()->count(); $i++) {
$newAnswer = $this->objectManager->create('Tx_Survey_Domain_Model_Answer');
$newSession->addAnswer($newAnswer);
} }
$this->view->assign('survey', $survey);
}
}
?>
Allerdings wird nun bei einem Aufruf der Seite, auf der das Plugin liegt, folgender Fehler angezeigt:
Class TYPO3\Survey\Controller\Tx_Extbase_Object_ObjectManagerInterface does not exist
ReflectionException thrown in file
C:\xampp\htdocs\prog01\typo3\sysext\extbase\Classes\Object\Container\ClassInfoFactory.php in line 99.
Ich hoffe, dass mir hierbei jemand weiterhelfen kann, bzw. sagen kann wieso diese Klasse nicht gefunden wird.
Denn es ist ja keine von mir erstellte Klasse, sondern eine in Extbase bestehende.
Ich bin für jede Hilfe dankbar!
Daher schonmal Danke im voraus.
Mit freundlichen Grüßen
BjoernBoba