diff options
author | Christophe Coevoet <stof@notk.org> | 2012-05-24 00:38:25 +0200 |
---|---|---|
committer | Christophe Coevoet <stof@notk.org> | 2012-05-24 00:38:25 +0200 |
commit | aabc5c56c0504c2cd1f93cd50f49351d10c7a9a3 (patch) | |
tree | fe7ba918080c802878554afe0c288c782611158a | |
parent | 4a122d4b291158b1b42b7a6ed4ff6a6ea495e8b2 (diff) |
Fixed the form to add new subscriptions
-rwxr-xr-x | src/Tolkiendil/AssoBundle/Admin/MemberAdmin.php | 2 | ||||
-rw-r--r-- | src/Tolkiendil/AssoBundle/Entity/Member.php | 31 |
2 files changed, 30 insertions, 3 deletions
diff --git a/src/Tolkiendil/AssoBundle/Admin/MemberAdmin.php b/src/Tolkiendil/AssoBundle/Admin/MemberAdmin.php index a0f1789..909d2e2 100755 --- a/src/Tolkiendil/AssoBundle/Admin/MemberAdmin.php +++ b/src/Tolkiendil/AssoBundle/Admin/MemberAdmin.php @@ -67,7 +67,7 @@ class MemberAdmin extends Admin ->add( 'subscriptions', 'sonata_type_collection', - array('required' => false, 'label' => ' '), + array('required' => false, 'label' => ' ', 'by_reference' => false), array('edit' => 'inline', 'inline' => 'table') ) ->end() diff --git a/src/Tolkiendil/AssoBundle/Entity/Member.php b/src/Tolkiendil/AssoBundle/Entity/Member.php index 29fc8f4..b2b0495 100644 --- a/src/Tolkiendil/AssoBundle/Entity/Member.php +++ b/src/Tolkiendil/AssoBundle/Entity/Member.php @@ -3,6 +3,7 @@ namespace Tolkiendil\AssoBundle\Entity; use Doctrine\Common\Collections\ArrayCollection; +use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; @@ -518,6 +519,22 @@ class Member } /** + * Removes a subscription + * + * @param \Tolkiendil\AssoBundle\Entity\Subscription $subscription + */ + public function removeSubscription(Subscription $subscription) + { + if ($this !== $subscription->getMember()) { + return; + } + + $subscription->setMember(null); + + $this->subscriptions->removeElement($subscription); + } + + /** * Add subscription * * TODO remove this method once SonataAdminBundle has been fixed to avoid requiring it with this crappy name. @@ -544,9 +561,19 @@ class Member * * @param \Doctrine\Common\Collections\Collection $subscriptions */ - public function setSubscriptions($subscriptions) + public function setSubscriptions(Collection $subscriptions) { - $this->subscriptions = $subscriptions; + foreach ($this->subscriptions as $subscription) { + if ($subscriptions->contains($subscription)) { + $subscriptions->removeElement($subscription); + } else { + $this->removeSubscription($subscription); + } + } + + foreach ($subscriptions as $subscription) { + $this->addSubscription($subscription); + } } /** |