繁体   English   中英

从子实体表单设置父实体

[英]Setup parent entity from child entity form

我正在将Symfony2用于PHP项目,但是我对实体继承有疑问。

我有一个数据库模型,要求在不同类型的员工之间有所作为。

这是模型化的摘录:

雇员

  • 礼貌
  • 名称
  • 名字
  • hired_at

秘书扩大员工

  • 员工[员工实体]
  • 角色[另一个实体]

卖方扩展员工

  • 员工[员工实体]
  • 部分[另一个实体]

必须分开它,因为我有另一个实体,称为Message,每个员工可以将其发送给其他实体。

信息

  • 作者[员工实体]
  • 收件人[员工实体]
  • 标题
  • 内容
  • send_at

在我的应用程序中,我希望能够创建一个新的“秘书”,并以相同的形式设置其“雇员”属性,而不是创建“雇员”实体,然后将其链接到新的秘书...

使用Symfony2的正确方法是什么?

我知道我可以将属性添加到表单中并手动设置实体,但是我确实认为应该有一种更简洁的方法...

可以使用FormBuilder吗?

实际上,很简单,我不知道可以在Symfony2中添加另一个FormType作为字段类型。

工作方式,以防万一:

namespace MyAdminBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class SecretaryType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('employee', new EmployeeType(), array('label' => 'Employee', 'required' => true))
            ->add('password', 'password', array('label' => 'Password', 'required' => true))
        ;
    }

    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'MyCoreBundle\Entity\Secretary'
        ));
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'my_adminbundle_secretary';
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM