【问题标题】:Setup parent entity from child entity form从子实体表单设置父实体
【发布时间】:2014-04-21 15:52:38
【问题描述】:

我正在将 Symfony2 用于 PHP 项目,但我有一个关于实体继承的问题。

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

这是模型化的摘录:

员工

  • 文明
  • 姓名
  • 名字
  • hired_at

秘书延长雇员

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

卖家扩展员工

  • 员工[员工实体]
  • 节[另一个实体]

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

留言

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

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

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

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

可以使用 FormBuilder 吗?

【问题讨论】:

    标签: php sql forms doctrine-orm symfony-2.4


    【解决方案1】:

    其实很简单,我不知道可以在 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';
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多