Hallo zusammen,
ich bin gerade etwas ratlos, da mir meine createAction einen Internal Server Error produziert mit der folgenden PHP-Fehlermeldung:
Call to a member function add() on a non-object in ...
Da ich die Standard-Aktionen, die mir der Extension Builder erstellt, nicht verändert habe, sondern nur die Formulare ein wenig modifiziert habe, weiß ich leider nicht mehr weiter. Vielleicht habt ihr aber auch schonmal ein solches Problem gehabt.
Hier noch meine createAction:
/**
* action create
*
* @param Tx_MyExt_Domain_Model_Role $newRole
* @return void
*/
public function createAction(Tx_MyExt_Domain_Model_Role $newRole) {
$this->roleRepository->add($newRole);
$this->flashMessageContainer->add('Your new Role was created.');
$this->redirect('overview');
}
Viele Grüße
Daniel
Grüezi
Fehlt Deiner Controller Klasse das Repository?
Siehe EXT:blog_example
/**
* @var Tx_BlogExample_Domain_Repository_BlogRepository
* @inject
*/
protected $blogRepository;
Grüsse, Heinz
Hallo,
bin mir nicht sicher, ob die Antwort mit dem BlogRepository (obwohl richtig) auch hilfreich war. 😉
Konkret wird versucht die Methode add() aufzurufen auf einem Objekt, das keines ist.
Das soll in deiner createAction zweimal geschehen.
$this->roleRepository->add($newRole);
$this->flashMessageContainer->add('Your new Role was created.');
Am flashMessageContainer wird's vermutlich nicht liegen. Was uns wieder zurück zum Repository bringt.
Als erstes würd ich , wie WebTekk schon sagt, ebenfalls tippen, daß deiner Controller-Klasse das roleRepository fehlt. Die entsprechende Repository-Klasse muss selbverständlich in Domain/Repository/RoleRepository.php sein.
Gruß Harald
Ja, so schlecht waren die Tipps mit dem Repository nicht. Es war zwar da, aber die Variable war nicht gesetzt, also keine inject-Funktion. Und seinen Ursprung hatte das Dilemma im vergessenen Haken beim Aggregate Root im Extension Builder 🙂
Vielen Dank auf jeden Fall für eure Hilfe!