在全局但在doctrine事件之前在文本表单字段上应用ucfirst()

时间:2016-11-30 16:36:17

标签: forms symfony normalization

我的应用程序中有几个表单使用的表单字段。 我需要强迫它到处都是ucfirst()' d。 完成此任务的最佳方法是什么?

我无法使用doctrine prePersist / preUpdate事件,因为此字段值也会通过在持久性之前调度的事件推送到另一个实体,并且我希望此时已经转换了此推送值。

我认为我可以使用DataTransformer,但在我看来,DataTransformers用于双向操作(转换/反向转换)。在这种情况下,不需要反向变换。所以它可能很糟糕地使用DataTransformer。

是否有其他解决方案全局执行此规范化?

1 个答案:

答案 0 :(得分:1)

在您的实体设置器中使用ucfirst()。例如:

...
public function setFirstname($fname){
    $first = ucfirst($fname);
    $this->first_name = $first;

    return $this;
}

那应该有用。但是你必须修改你的所有实体。

但我想知道这样做是否更容易:

$user->setFirstName( ucfirst( $form->get('first_name')->getData() ) );

也许这是第二种选择?