doctrine2 - ZF2 doctrine OneToMany annotation form -
i have following entities:
user
/** * users * * @orm\table(name="users") * @orm\entity(repositoryclass="users\entity\repository\usersrepository") * @annotation\name("user") * @annotation\hydrator("zend\stdlib\hydrator\classmethods") */ class user { /** * @var string * * @orm\column(name="name", type="string", length=100, nullable=false) * @annotation\filter({"name":"stringtrim"}) * @annotation\validator({"name":"stringlength", "options":{"min":2, "max":100}}) * @annotation\attributes({"type":"text","class":"form-control"}) * @annotation\options({"label":"full name:"}) */ private $name; /** * @var user\entity\useritem * * @orm\onetomany(targetentity="user\entity\useritem", mappedby="user") * @annotation\exclude() */ private $items; /** * @var integer * * @orm\column(name="id", type="integer") * @orm\id * @orm\generatedvalue(strategy="auto") * @annotation\exclude() */ private $id; public function __construct() { $this->vessels = new arraycollection(); } public function setname($name) { $this->name = $name; return $this; } public function getname() { return $this->name; } public function getid() { return $this->id; } public function getitems() { return $this->items } public function setitems($items) { $this->itemr = $items; return $this; }
item
/** * items * @orm\entity * @orm\table(name="items") * @orm\entity(repositoryclass="user\entity\repository\itemsrepository") * @annotation\name("item") * @annotation\hydrator("zend\stdlib\hydrator\classmethods") */ class item { /** * @var string * * @orm\column(name="name", type="string", length=100, nullable=false) * @annotation\filter({"name":"stringtrim"}) * @annotation\validator({"name":"stringlength", "options":{"min":2, "max":100}}) * @annotation\attributes({"type":"text","class":"form-control"}) * @annotation\options({"label":"name:"}) */ private $name; /** * @var integer * * @orm\column(name="id", type="integer") * @orm\id * @orm\generatedvalue(strategy="auto") * @annotation\exclude() */ private $id;
and entity keepeing relation between 2 useritem
/** * useritem * * @orm\table(name="users_items") * @orm\entity(repositoryclass="user\entity\repository\useritemsrepository") * @annotation\name("user_item") * @annotation\hydrator("zend\stdlib\hydrator\classmethods") */ class useritem{ /** * @var users\entity\user * * @orm\manytoone(targetentity="users\entity\user", inversedby="items") * @orm\joincolumn(name="user_id", referencedcolumnname="id") * @annotation\exclude() */ private $user; /** * @var user\entity\item * * @orm\manytoone(targetentity="user\entity\item", inversedby="users") * @orm\joincolumn(name="item_id", referencedcolumnname="id") * @annotation\type("doctrinemodule\form\element\objectselect") */ private $item; /** * @var integer * * @orm\column(name="id", type="integer") * @orm\id * @orm\generatedvalue(strategy="auto") * @annotation\exclude() */ private $id;
with entities can create , edit user , item. form generated annotations. question how can generate form assigning items user. preferably select field(s) multiple selection. , after submitting doctrine should save relations.
i wrote form represent items select:
class itemsform extends form { public function __construct($entitymanager, $name = null) { parent::__construct('items'); $this->setattribute('method', 'post'); $this->add(array( 'type' => 'doctrinemodule\form\element\objectselect', 'name' => 'items', 'attributes' => array( 'id' => 'selectitems', 'multiple' => true, 'data-placeholder' => 'items' ), 'options' => array( 'object_manager' => $entitymanager, 'target_class' => 'user\entity\item', 'property' => 'name', ), ) ); } }
and not know how preselect items user has assigned.
in select field in value must have id items. after submit can that
foreach($post['items'] $itemid) { $useritem = new useritem(); $useritem->user = $this->getentitymanager()->getreference('user', $userid); $useritem->item = $this->getentitymanager()->getreference('item', $itemid); $this->getentitymanager()->save($useritem); }
Comments
Post a Comment