Я хочу сделать форму в symfony, где entrie упорядочивается по соотношению (у меня есть клиентское сущность с отношением «Множество к одному»). Форма должна заказывать каждый клиент Enterprise.Symfony: Ordering Entity Type Форма по отношению к объекту
Вот мой клиент Entity
/**
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="MyBrowserBundle\Entity\UserRepository")
*/
class User
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="MyBrowserBundle\Entity\Enterprise", inversedBy="user", cascade={"persist"})
* @ORM\JoinColumn(nullable=false)
*/
private $enterprise;
//Some data
// Setter Getter
/**
* Set enterprise
*
* @param \MyBrowserBundle\Entity\Enterprise $enterprise
* @return User
*/
public function setEnterprise(\MyBrowserBundle\Entity\Enterprise $enterprise)
{
$this->enterprise = $enterprise;
return $this;
}
/**
* Get enterprise
*
* @return \MyBrowserBundle\Entity\Enterprise
*/
public function getEnterprise()
{
return $this->enterprise;
}
public function __construct() {
//Some code
}
}
И мое предприятие Entity
/**
* @ORM\Table(name="enterprise") *@ORM\Entity(repositoryClass="MyBrowserBundle\Repository\EnterpriseRepository")
*/
class Enterprise
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @ORM\OneToMany(targetEntity="MyBrowserBundle\Entity\User", mappedBy="enterprise", cascade={"persist"})
*/
private $user;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return Enterprise
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Constructor
*/
public function __construct()
{
$this->user = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add user
*
* @param \MyBrowserBundle\Entity\User $user
* @return Enterprise
*/
public function addUser(\MyBrowserBundle\Entity\User $user)
{
$this->user[] = $user;
//$user->setEnterprise($this);
return $this;
}
/**
* Remove user
*
* @param \MyBrowserBundle\Entity\User $user
*/
public function removeUser(\MyBrowserBundle\Entity\User $user)
{
$this->user->removeElement($user);
}
/**
* Get user
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getUser()
{
return $this->user;
}
}
Я использую двумерный массив с выбором типа, как это ($ fullArray является 2d массив):
$formSearch = $this->createFormBuilder($fullArray)
->add('List', 'choice', array(
'choices' => $fullArray,
'choice_attr' => function($fullArray, $key, $index) {
return ['class' => 'category_'.$key];
},
))
->add('search', 'submit')
->getForm();
$formSearch->handleRequest($request);
Проблема в том, когда веточка отображает форму, все данные смешаны.
Есть ли другой способ сделать это? (С EntityType?) Я новичок в Symfony 2
Благодаря
как вам заполнить '$ fullArray'? – craigh
С двумя foreach, но я проверил с var_dump, если массив был прав, и это было. – Zglukk