Extbase - Objekte handeln

Aus Wikizone
Wechseln zu: Navigation, Suche

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));
}