从子实体窗体设置父实体



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

我有一个数据库模型,需要区分不同类型的员工。

以下是模型化的摘录:

员工

  • 文明
  • 名称
  • 名字
  • 雇佣日期

秘书延长员工

  • 雇员[雇员实体]
  • 角色[另一实体]

卖方延长员工

  • 雇员[雇员实体]
  • 节[另一实体]

我必须将其分离,因为我有另一个名为Message的实体,每个员工都可以将其发送给其他员工。

消息

  • 作者[雇员实体]
  • 收件人[雇员实体]
  • 所有权
  • 内容
  • sent_at

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

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

我知道我可以手动将属性添加到表单中并设置实体,但我真的认为应该有一种更干净的方法。。。

是否可以使用FormBuilder?

事实上很容易,我不知道是否可以在Symfony2中添加另一个FormType作为字段类型。

工作方式,以防万一:

namespace MyAdminBundleForm;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentOptionsResolverOptionsResolverInterface;
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' => 'MyCoreBundleEntitySecretary'
        ));
    }
    /**
     * @return string
     */
    public function getName()
    {
        return 'my_adminbundle_secretary';
    }
}

最新更新