dimanche 28 juin 2015

Dependency Injection funktioniert nicht

Hallo,

ich arbeite mich gerade durch das Extbase-Buch von Patrick Lobacher und konnte die Dependency Injection des Persistence Manager nicht nachvollziehen.

Beim Aufruf von $this->persistenceManager->persistAll(); kommt die Meldung

Code:

PHP Fatal error:  Call to a member function persistAll() on null in /www/sites/ExtbaseBuch/typo3conf/ext/simpleblog/Classes/Controller/BlogController.php on line 70
Offensichtlich ist $this->persistenceManager NULL. Ich habe eine Abfrage eingefügt, die dass überprüft und mir bestätigt hat.

Wenn ich den persistenceManager mit

PHP-Code:

$this->persistenceManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance("TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager"); 

instanziiere funktioniert es. Aber warum funktioniert die DI nicht?

Hier mein Code:

PHP-Code:

<?php
namespace Lobacher\Simpleblog\Controller;


use 
TYPO3\CMS\Extbase\Mvc\Controller\ActionController;

/**
 * BlogController
 */
class BlogController extends ActionController {

    
/**
     * blogRepository
     *
     * @var \Lobacher\Simpleblog\Domain\Repository\BlogRepository
     * @inject
     */
    
protected $blogRepository NULL;

    
/**
     * Persistence Manager
     *
     * @var \TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager
     * @inject
     */
    
protected $persistenceManager;


    
/**
     * action list
     *
     * @return void
     */
    
public function listAction() {
        
$blogs = array();
        for (
$i=1$i<=3$i++) {
            
$blog $this->objectManager->get('\\Lobacher\\Simpleblog\\Domain\\Model\\Blog');
            
$blog->setTitle('Das ist der ' $i '. Blog!');
            
$this->blogRepository->add($blog);
        }

        
//$this->persistenceManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance("TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager");
        
if (is_null ($this->persistenceManager)) {
            return 
"PersistenceManager ist Null";
        }
        
$this->persistenceManager->persistAll();
        
$this->view->assign('blogs'$this->blogRepository->findAll());

    }

}

Viele Grüße
Wonko


Dependency Injection funktioniert nicht

Aucun commentaire:

Enregistrer un commentaire