Rob*_*lca 4 symfony-forms symfony symfony-sonata symfony-2.1 sonata-admin
我在帐户和用户之间有一对多的关系.我正在使用sonata管理员进行CRUD.据我所知,它使用Symfony表单来完成工作.我试图添加这样的字段:
->add('users', 'entity', array(
'class' => 'AcmeDemoBundle:User',
'required' => true,
'multiple' => true,
'expanded' => true
));
Run Code Online (Sandbox Code Playgroud)
我也尝试过sonata_type_model
->add('users', 'sonata_type_model', array(
'class' => 'AcmeDemoBundle:User',
'required' => true,
'multiple' => true,
'expanded' => true
));
Run Code Online (Sandbox Code Playgroud)
问题是,在编辑帐户时(当我编辑用户的所有内容都会更新时),不会保存任何内容(与关系相关).我知道我必须更新拥有方(用户端),但我没有成功,因为"公共函数addUser($ user)"没有被调用所以我不能添加类似"$ user-> setAccount($ this )"到那个功能.
我的实体看起来像这样:
class Account
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $name;
/**
* @ORM\OneToMany(targetEntity="Acme\DemoBundle\User", mappedBy="account", cascade={"persist", "remove"})
*/
protected $users;
/**
* Add users
*
* @param Acme\DemoBundle\Entity\User $user
* @return Account
*/
public function addUser(\Acme\DemoBundle\Entity\User $user)
{
$user->setAccount($this);
$this->users[] = $user;
return $this;
}
/**
* Remove users
*
* @param Acme\DemoBundle\Entity\User $user
*/
public function removeUser(\Acme\DemoBundle\Entity\User $user)
{
$user->setAccount(null);
$this->users->removeElement($user);
}
/**
* Get users
*
* @return Doctrine\Common\Collections\Collection
*/
public function getUsers()
{
return $this->users;
}
}
Run Code Online (Sandbox Code Playgroud)
.
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Acme\DemoBundle\Account", inversedBy="users")
*/
protected $account;
/**
* Set account
*
* @param Acme\DemoBundle\Entity\Account $account
* @return User
*/
public function setAccount(\Acme\DemoBundle\Entity\Account $account = null)
{
$this->account = $account;
return $this;
}
/**
* Get account
*
* @return Acme\DemoBundle\Entity\Account
*/
public function getAccount()
{
return $this->account;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题与此https://github.com/symfony/symfony/issues/1540有关
在我添加by_reference => false之后,调用帐户设置器并且可以更新拥有方.
归档时间: |
|
查看次数: |
8086 次 |
最近记录: |