0

我目前正在使用Symfony 2.6在网站上实现通知首选项。

持有通知偏好的实体如下:

class UserNotification
{
    //...
    
    /**
      * @ORM\Column(type="boolean")
      */
    private $downtimeNotificationEnabled;

    /**
      * @ORM\Column(type="boolean")
      */
    private $newPostNotificationEnabled;

    //...
}

目前大约有 15 个这样的不同键,但我现在还想允许为每种类型配置EmailSMSDashboard通知。我没有为每种类型创建两个额外的列,而是考虑将每个$*Enabled列类型从更改boolean为 Doctrine array,并将数据作为关联数组 ( ['dashboard' => true, 'email' => false, 'sms' => true]) 保存在每个表列中。

我的问题是关于然后将此array列连接到 Symonfy表单类型。据我了解,我可以为该字段创建一个自定义类型,并使用它而不是'checkbox'我当前使用的类型。像这样的东西:

class NotificationSettingType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('dashboard', 'checkbox', [
                'mapped'    => false,
                'data'      => true
            ])
            ->add('email', 'checkbox', [
                'mapped'    => false,
                'data'      => true
            ])
            ->add('sms', 'checkbox', [
                'mapped'    => false,
                'data'      => true
            ])
        ;
    }

    //...
}

...和主要形式类型...

class NotificationsType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('downtimeNotificationEnabled', new NotificationSettingType())
            ->add('newPostNotificationEnabled', new NotificationSettingType())
            //...
        ;
    }
}

但是后来我不明白如何用实体中的数据填充'checkbox'类型的值。NotificationSettingTypearray

编辑 1

进一步澄清:

我正在寻找如何将数据从/绑定到UserNotification特定的列。

例如,说:

UserNotification::$downtimeNotificationEnabled = [
    'dashboard' => true, 
    'email'     => false, 
    'sms'       => true
]

然后在NotificationSettingType本专栏中:

  • 'dashboard'会被检查
  • 'email'将不被选中
  • 'sms'会被检查

然后,在提交之后,例如,如果我取消选中SMS,则新数组将在列变量中为:

UserNotification::$downtimeNotificationEnabled = [
    'dashboard' => true, 
    'email'     => false, 
    'sms'       => false
]

我知道如何传递选项,但我不知道如何转换这些数据以使其与 Symfony2 表单类型兼容。

4

0 回答 0