Extbase - Objekte handeln: Unterschied zwischen den Versionen
Aus Wikizone
(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( | + | $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));
}