Symfony2 - 仅获取表单的已更改字段

时间:2014-04-15 13:30:51

标签: forms symfony entitymanager

在控制器中,我定义了一个表单,允许用户对某些字段进行一些更改:

$page['community']是具有presidentvicepresidentsecretaryadministrator属性的实体。每个都与Pro\UserBundle\Entity\User实体(id)相关联:

    $form = $this->createFormBuilder($page['community'])
        ->add('president', 'entity', array(
            'label' => "Presidente",
            'class' => 'Pro\UserBundle\Entity\User',
            'property' => 'fullName',
            'choices' => $page['community']->getOwners()
        ))
        ->add('vicepresident', 'entity', array(
            'label' => "Vicepresidente",
            'class' => 'Pro\UserBundle\Entity\User',
            'property' => 'fullName',
            'choices' => $page['community']->getOwners(),
            'required' => false
        ))
        ->add('secretary', 'entity', array(
            'label' => "Secretario",
            'class' => 'Pro\UserBundle\Entity\User',
            'property' => 'fullName',
            'choices' => $page['community']->getOwners(),
            'required' => false
        ))
        ->add('administrator', 'entity', array(
            'label' => "Administrador",
            'class' => 'Pro\UserBundle\Entity\User',
            'property' => 'fullName',
            'choices' => $page['community']->getMembers(),
            'required' => false
        ))
        ->getForm();

    if ($this->getRequest()->isMethod('post')) {
        if ($form->bind($this->getRequest())->isValid()) {
            $this->getEntityManager()->flush();
            ...

这是正确的。但现在我想根据更改的属性触发一些事件。例如。我希望在administrator属性发生变化时触发事件。

我可以获得全新的价值观,但我不知道其中哪些已发生变化。我可以在刷新之前获取这些值,然后将每个值与新值进行比较,但也许有一种更简单的方法来实现它。有什么想法吗?

0 个答案:

没有答案