2016-11-30 64 views
0

前申請ucfirst()我有我的應用程序幾種形式使用的表單字段。 我需要強制它成爲ucfirst()'d,無處不在。 完成此操作的最佳方法是什麼?在全球範圍內的文本域,但教義事件

我不能使用doctrine prePersist/preUpdate事件,因爲這個字段值也被推送到另一個實體中,通過持久化之前的事件派發方式,我希望此推送值此時已經被轉換。

我想我可以用一個DataTransformer代替,但在我的腦海裏,DataTransformers是雙directionnal操作(變換/反向轉換)。在這種情況下,不需要反向轉換。所以這可能是DataTransformer的一個不好的用法。

是否有任何其他的解決方案在全球範圍內執行此正常化?

+0

你可以把'ucfirst'在實體二傳手。 – qooplmao

+0

這可能是KISS原則的最佳使用(https://en.wikipedia.org/wiki/KISS_principle)。我很慚愧,我甚至沒有想到它。您可以將您的評論轉換爲答案,我很樂意接受並接受它。 – VaN

回答

1

使用ucfirst()在你的實體setter方法。例如:

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

    return $this; 
} 

這應該有效。但是你必須修改所有的實體。

但我不知道是否是更容易做到這一點:

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

也許這是第二個選項?