表单';s视图数据应为类My(..)的实例,但却是(n)数组


The form's view data is expected to be an instance of class My(...), but is a(n) array

出现错误:

表单的视图数据应为类的实例我的''FrontendBundle''Entity''Intro,但它是一个(n)数组。你可以避免这种情况将"data_class"选项设置为null或添加视图时出错将(n)数组转换为的实例的转换器我的''FrontendBundle''Entity''Intro。

怎么了

在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
        );
    }

my 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'
        ));
        }   
}

我的简介.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;
    }
}

您的表单正在等待一个且只有一个INtro实体。

findAll()查询将返回null或包含1个或多个Intro实例的数组。

不能使用findAll()查询的结果创建表单。

您需要提供一个id来从数据库或findAll()提供的数组循环中查找特定的Intro,并为每个结果创建一个新的IntroType实例。