我有一个带有3个字符串字段的实体电影。我做了一个表单来创建实体A,没有问题,它工作正常。
现在,我想用我的实体中的每一个电影制作一个表(一个接一个行),并能够更改我想要的字段,并一次性保存所有更改。
我已经尝试了烹饪书“如何嵌入表单集合”,但它不符合我的问题:c/
下面是一些示例代码,用来解释我尝试做的事情,但谁做不到:
实体胶片
class Film
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string",nullable=false)
*/
private $name;
/**
*
* @ORM\Column(type="string")
*/
private $style;
/**
* @ORM\Column(type="string")
*/
private $director;
/**
* @ORM\Column(type="string")
*/
private $actor;
控制器薄膜
public function updateAction(Request $request)
{
$films = $this->getDoctrine()
->getRepository('LfayBundle:Film\Film');
$films_all = $films->findAll();
foreach ($films_all as $film) {
$form = $this->createForm(FilmType::class, $film);
$forms[] = $form->createView();
}
$form_film->handleRequest($request);
if ($form_film->isSubmitted() && $form_film->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($films_all);
$em->flush();
return $this->redirectToRoute('film_update');
}
return $this->render(
'film/film_update.html.twig',
array(
'form_film' => $forms,
)
);
}
胶片类型
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class)
->add('style', TextType::class)
->add('director', TextType::class)
->add('actor', TextType::class)
;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'LfayBundle\Entity\Film\Film'
));
}
1条答案
按热度按时间zour9fqk1#
我已经找到了吧!
如果有人需要解决同样的问题,这里是我的解决方案。
胶片控制器:
胶片容器类型:
胶片类型:
电影更新. html. twig
就这样。