Extbase - Objekte handeln: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „== Objekte erstellen == Wenn das Repository im Controller injected wurde: $this->miniObjectRepository->add($newMiniObject); $this->redirect('list'); == Kindo…“)
 
Zeile 25: Zeile 25:
 
  <f:form action="{action}" object="{post}" name="post" arguments="{blog:blog}" additionalAttributes="{role:'form'}">
 
  <f:form action="{action}" object="{post}" name="post" arguments="{blog:blog}" additionalAttributes="{role:'form'}">
 
--> ''' Controller'''
 
--> ''' Controller'''
 +
Wenn man nicht injekten will wie in dem Beispiel muß man über den objectManager gehen um das Elternobjekt (hier den Blog) zu holen.
 
<syntaxhighlight lang="php">
 
<syntaxhighlight lang="php">
 
/**
 
/**
Zeile 38: Zeile 39:
 
     //$this->postRepository->add($post);
 
     //$this->postRepository->add($post);
 
     $blog->addPost($post);
 
     $blog->addPost($post);
$this->objectManager->get( 'Lobacher\\Simpleblog\\Domain\\Repository\\BlogRepository' )->update($blog);
+
$this->objectManager->get( 'Lobacher\\Simpleblog\\Domain\\Repository\\BlogRepository' )->update($blog);
 
     $this->redirect('show','Blog',NULL,array('blog'=>$blog));
 
     $this->redirect('show','Blog',NULL,array('blog'=>$blog));
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>

Version vom 13. Juli 2015, 17:19 Uhr

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