Created
June 29, 2011 18:51
-
-
Save j/1054583 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace JStout\MainBundle\Entity; | |
use Doctrine\ORM\Mapping as ORM; | |
/** | |
* @ORM\Entity | |
* @ORM\Table(name="offer") | |
*/ | |
class Offer | |
{ | |
/** | |
* @var integer | |
* | |
* @ORM\Column(type="integer") | |
* @ORM\Id | |
* @ORM\GeneratedValue(strategy="IDENTITY") | |
*/ | |
private $id; | |
/** | |
* @var \JStout\MainBundle\Entity\PathOffer | |
* | |
* @ORM\OneToMany(targetEntity="PathOffer", mappedBy="offer", cascade={"all"}) | |
*/ | |
private $paths; | |
[...] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace JStout\MainBundle\Entity; | |
use Doctrine\ORM\Mapping as ORM; | |
/** | |
* @ORM\Entity | |
* @ORM\Table(name="path") | |
*/ | |
class Path | |
{ | |
/** | |
* @var integer | |
* | |
* @ORM\Column(type="integer") | |
* @ORM\Id | |
* @ORM\GeneratedValue(strategy="IDENTITY") | |
*/ | |
private $id; | |
/** | |
* @var \JStout\MainBundle\Entity\PathOffer | |
* | |
* @ORM\OneToMany(targetEntity="PathOffer", mappedBy="path", cascade={"all"}) | |
* @ORM\OrderBy({"pos" = "ASC"}) | |
*/ | |
private $offers; | |
[...] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
[...] | |
/** | |
* @Extra\Route("/path", name="admin_path") | |
* @Extra\Route("/path/{id}/edit", name="admin_path_edit", requirements={"id" = "\d+"}) | |
* @Extra\Template() | |
*/ | |
public function pathAction($id = null) | |
{ | |
$path = $this->_getObject('Path', $id); // this function either generates a new entity or grabs one from database depending on $id | |
$form = $this->get('form.factory')->create(new Form\PathType(), $path); | |
$formHandler = $this->get('form.handler')->create(new Form\PathHandler(), $form); | |
// process form | |
if ($formHandler->process()) { | |
$this->get('session')->setFlash('notice', 'Successfully ' . ($this->_isEdit($path) ? 'edited' : 'added') . ' path!'); | |
return $this->redirect($this->generateUrl('admin_path')); | |
} | |
return array( | |
'path' => $path, | |
'form' => $form->createView(), | |
'postUrl' => !$this->_isEdit($path) ? $this->generateUrl('admin_path') : $this->generateUrl('admin_path_edit', array('id' => $path->getId())), | |
'paths' => $this->_paginate('Path'), | |
'edit' => $this->_isEdit($path) ? true : false | |
); | |
} | |
[...] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace JStout\MainBundle\Form; | |
use JStout\MainBundle\Component\Form\FormHandlerInterface, | |
Symfony\Component\Form\Form, | |
Symfony\Component\HttpFoundation\Request, | |
Doctrine\ORM\EntityManager, | |
JStout\MainBundle\Entity\Path; | |
class PathHandler implements FormHandlerInterface | |
{ | |
protected $form; | |
protected $request; | |
protected $entityManager; | |
public function buildFormHandler(Form $form, Request $request, EntityManager $entityManager) | |
{ | |
$this->form = $form; | |
$this->request = $request; | |
$this->entityManager = $entityManager; | |
} | |
public function process() | |
{ | |
if ('POST' == $this->request->getMethod()) { | |
// bind form data | |
$this->form->bindRequest($this->request); | |
// If form is valid | |
if ($this->form->isValid() && ($path = $this->form->getData()) instanceOf Path) { | |
$this->entityManager->persist($path); | |
foreach ($path->getOffers() as $offer) { | |
$offer->setPath($path); | |
$this->entityManager->persist($offer); | |
} | |
$this->entityManager->flush(); | |
return true; | |
} | |
} | |
return false; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace JStout\MainBundle\Entity; | |
use Doctrine\ORM\Mapping as ORM; | |
/** | |
* @ORM\Entity | |
* @ORM\Table(name="path_offer") | |
*/ | |
class PathOffer | |
{ | |
/** | |
* @ORM\Column(type="integer") | |
* @ORM\Id | |
* @ORM\GeneratedValue(strategy="IDENTITY") | |
*/ | |
private $id; | |
/** | |
* @ORM\ManyToOne(targetEntity="Path", inversedBy="offers", cascade={"all"}) | |
*/ | |
private $path; | |
/** | |
* @ORM\ManyToOne(targetEntity="Offer", inversedBy="paths", cascade={"all"}) | |
*/ | |
private $offer; | |
/** | |
* @ORM\Column(type="integer") | |
*/ | |
private $pos; | |
[...] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace JStout\MainBundle\Form; | |
use Symfony\Component\Form\AbstractType, | |
Symfony\Component\Form\FormBuilder; | |
class PathOfferType extends AbstractType | |
{ | |
public function buildForm(FormBuilder $builder, array $options) | |
{ | |
$builder | |
->add('offer', 'entity', array( | |
'class' => 'JStout\MainBundle\Entity\Offer', | |
'query_builder' => function($repository) { return $repository->createQueryBuilder('o')->orderBy('o.name', 'ASC'); }, | |
'property' => 'name' | |
)) | |
->add('pos', 'integer'); | |
} | |
public function getDefaultOptions(array $options) | |
{ | |
return array( | |
'data_class' => 'JStout\MainBundle\Entity\PathOffer' | |
); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace JStout\MainBundle\Form; | |
use Symfony\Component\Form\AbstractType, | |
Symfony\Component\Form\FormBuilder; | |
class PathType extends AbstractType | |
{ | |
public function buildForm(FormBuilder $builder, array $options) | |
{ | |
$builder | |
->add('name') | |
->add('title') | |
->add('offers', 'collection', array( | |
'type' => new PathOfferType(), | |
'allow_add' => true, | |
'allow_delete' => true | |
)) | |
->add('active'); | |
} | |
public function getDefaultOptions(array $options) | |
{ | |
return array( | |
'data_class' => 'JStout\MainBundle\Entity\Path' | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment