Symfony2学说形式 - 实体类型

时间:2014-07-10 11:53:46

标签: forms symfony doctrine

我试图以symfony2形式添加实体字段,但它总是给我同样的错误:' 500(内部服务器错误)'。

这是我用来创建表单的类。它是用学说和CRUD自动编程的。

class ClientType extends AbstractType
{
        /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('companyName', 'text' , array( 'attr' => array( 'class' => 'companyname' ) ) )
            ->add('contactUserName','text' , array( 'attr' => array( 'class' => 'contactusername' ) ))
            ->add('phone','text' , array( 'attr' => array( 'class' => 'phone' ) ))
            ->add('subdomain','text' , array( 'attr' => array( 'class' => 'subdomain' ) ))
            ->add('email','text' , array( 'attr' => array( 'class' => 'email' ) ))
            ->add('website','text' , array( 'attr' => array( 'class' => 'website' ) ))

         ;

    }

这很好,但是,我尝试这样的事情:

->add('client', 'entity', array(
            'class' => 'BackendBundle:Client'));

' 500(内部服务器错误)'

我尝试了很多不同的方法来做到这一点,但它总是一样的错误。 问题是,我可以添加或删除在课程CRUD完成此课程时在初学时创建的字段,但如果我尝试添加更多不同类型的字段,它就不会让我。

我应该创建自己的Type类,以便我可以自定义表单,还是有办法修改表单原则?

TY

1 个答案:

答案 0 :(得分:1)

  

问题是,我可以添加或删除在该处创建的字段   当这个课程由学说CRUD完成但是如果我尝试的时候开始   添加更多不同类型的字段,它不会让我。

这是因为根据ClientType.php文件的结构,创建BackendBundle\Entity\Client.php的命令会这样做。表单将映射到您要创建的实体。如果您需要表单上的更多字段,则需要在BackendBundle\Entity\Client.php中添加字段作为属性,然后运行:

php bin/console doctrine:generate:entities <VENDOR>/<BUNDLE>/Entity/Client

or if using Symfony 2 < version 2.5

php app/console doctrine:generate:entities <VENDOR>/<BUNDLE>/Entity/Client

为该字段生成getter和setter,然后

php bin/console doctrine:schema:update --force 

or if using Symfony 2 < version 2.5

php app/console doctrine:schema:update --force        

将新字段添加到数据库表中。

现在您可以尝试按原样添加字段,确保add()方法中的第一个参数与您在实体中命名属性的方式完全匹配。