如何在数据库中提交表单请求之前修改其中的值?

时间:2015-02-26 12:39:13

标签: forms symfony events

我使用eventlisterner检查用户/作者返回的一些值,然后再将它们提交给数据库。

我的表单允许ROLE_USERS将某些属性(如statut)更改为实体文章。文章具有statut(已发布,删除)等属性并且已被删除('作者想删除此文章' null'),这些属性允许ROLE_ADMIN轻松查看某些文章。

反正。当作者提交 statut =>' DELETE'要将 tobechecked 的值转换为=> '作者想要删除这篇文章'。

这是我尝试的但这不起作用。

class Article extends AbstractType
{
  public function buildForm(FormBuilderInterface $builder, array $options)
  {
    $builder->add('Statut', ...);
            ->add('toBeChecked',  ...);

    $dynamicSubmissionFunc = function (FormEvent $event)
    {
       $data = $event->getData();
       if($data['statut'] == 'DELETE')
       {
           // HOW CAN I MODIFY HERE THE VALUE OF ARTICLE ATTRIBUTE
           $data['toBeChecked'] = 'author wants to delete this article';
           // nothing is changed in the attribute toBeChecked.
       }
    }
    $builder->addEventListener(FormEvents::PRE_SUBMIT, $dynamicSubmissionFunc);
  }
}

1 个答案:

答案 0 :(得分:2)

确定。我想通了。您需要将数据设置回事件:

$event->setData($data);