【问题标题】:Symfony2 Saving data of related Entity after submiting formSymfony2 提交表单后保存相关实体的数据
【发布时间】:2014-02-01 23:34:43
【问题描述】:

我开始使用 Symfony2 进行开发,看起来我需要帮助。我有与 SynchronizationSetting 实体相关的产品实体。我可以通过与他的实体映射的表单来编辑产品数据。但是我还需要在 SynchronizationSetting 中修改一些与产品相关的数据。为此,我修改了表单,使其看起来像这样 (Vendor\ProductBundle\Form\ProductType.php):

...
    ->add('synchronization_setting', 'choice', array(
            'choices' => array('daily' => 'Daily', 'weekly' => 'Weekly', 'never' => 'Never'))

提交表单后,选中的复选框值将传递给产品实体中的 setSynchronizationSetting 方法。然后我这样做(供应商\ProductBundle\Entity\SynchronizationSetting.php):

public function setSynchronizationSetting($data)
{
        $synchronizationSetting = new SynchronizationSetting();
        $synchronizationSetting->setDaily(in_array('daily', $data) ? '1' : '0');
...
}

现在我需要以某种方式将这些 SynchronizationSetting 实体保存到数据库中。我读到从这里调用实体管理器是非常糟糕的做法,所以......我应该如何保存它?

【问题讨论】:

    标签: php symfony orm entity relation


    【解决方案1】:

    一种可能的方式(我不确定这是否是好的做法)

    public function setSynchronizationSetting($data)
    {
             $synchronizationSetting = new SynchronizationSetting();
             $synchronizationSetting->setDaily(in_array('daily', $data) ? '1' : '0');
    }
    
    public function retSynchronizationSetting()
    {
        return $this->synchronizationSetting;
    }
    

    然后在您处理表单数据的控制器中调用 retSynchronizationSetting() 并使用 EntityManager 保存实体。

    【讨论】:

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