出现错误:
表单的视图数据应该是类的实例 我的\ FrontendBundle \ Entity \ Intro,但是是一个(n)数组。你可以避免这种情况 设置" data_class" null的选项或添加视图的选项 将(n)数组转换为实例的变换器 我的\ FrontendBundle \实体\简介
有什么问题?
在DefaultController.php中我有
public function formularzAction(){
$Repo = $this->getDoctrine()->getRepository('MyFrontendBundle:Intro');
$Register = $Repo->findAll();
$form = $this->createForm(new EditType(), $Register);
return array(
'form' => $form->createView(),
'rows' => $Register
);
}
我的EditType.php
<?php
namespace My\FrontendBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class EditType extends AbstractType{
public function getName(){
return 'register_form';
}
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('info', 'textarea', array(
'constraints' => array(
),
'label' => 'Informacje dodatkowe'
))
;
}
public function setDefaultOptions(\Symfony\Component\OptionsResolver\OptionsResolverInterface $resolver) {
$resolver->setDefaults(array(
'data_class' => 'My\FrontendBundle\Entity\Intro'
));
}
}
我的Intro.php:
<?php
namespace My\FrontendBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Intro
*
* @ORM\Table()
* @ORM\Entity
*/
class Intro
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="info", type="string", length=2500)
*/
private $info;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set info
*
* @param string $info
* @return Intro
*/
public function setInfo($info)
{
$this->info = $info;
return $this;
}
/**
* Get info
*
* @return string
*/
public function getInfo()
{
return $this->info;
}
}
答案 0 :(得分:3)
您的表单正在等待一个且只有一个INtro实体。
您的findAll()
查询将返回null或包含一个或多个Intro实例的数组。
您无法使用findAll()
查询结果创建表单。
您需要提供一个id来从数据库中查找特定的Intro,或者通过数组findAll()
循环,为每个结果创建一个新的IntroType实例。