Extbase - Objekte handeln
Aus Wikizone
Version vom 13. Juli 2015, 17:24 Uhr von 37.49.33.84 (Diskussion)
Objekte erstellen
Wenn das Repository im Controller injected wurde:
$this->miniObjectRepository->add($newMiniObject);
$this->redirect('list');
Kindobjekte erstellen
Hier kann man nicht einfach erstellen sonst ist die Datenbankverbindung nicht vorhanden. Also muß man vorher im View das Mutterobjekt durchschleifen und danach im Controller die Verknüpfung berücksichtigen:
Controller
/**
* addForm action - displays a form for adding a post
*
* @param \Lobacher\Simpleblog\Domain\Model\Blog $blog
* @param \Lobacher\Simpleblog\Domain\Model\Post $post
*/
public function addFormAction(
\Lobacher\Simpleblog\Domain\Model\Blog $blog,
\Lobacher\Simpleblog\Domain\Model\Post $post = NULL) {
$this->view->assign('blog',$blog);
$this->view->assign('post',$post);
}
--> Fluid
<f:form action="{action}" object="{post}" name="post" arguments="{blog:blog}" additionalAttributes="{role:'form'}">
--> Controller Wenn man nicht injekten will wie in dem Beispiel muß man über den objectManager gehen um das Elternobjekt (hier den Blog) zu holen.
/**
* add action - adds a post to the repository
*
* @param \Lobacher\Simpleblog\Domain\Model\Blog $blog
* @param \Lobacher\Simpleblog\Domain\Model\Post $post
*/
public function addAction(
\Lobacher\Simpleblog\Domain\Model\Blog $blog,
\Lobacher\Simpleblog\Domain\Model\Post $post) {
$post->setPostdate(new \DateTime());
//$this->postRepository->add($post);
$blog->addPost($post);
$this->objectManager->get( 'Lobacher\\Simpleblog\\Domain\\Repository\\BlogRepository' )->update($blog);
$this->redirect('show','Blog',NULL,array('blog'=>$blog));
}
Manuell persistieren
Normalerweise wird nach Ende einer Action automatisch persistiert. Will man das schon vorher erreichen (um z.b. in der gleichen Action die Änderungen noch anzuzeigen kann man das so machen:
$this->persistenceManager->persistAll();