簡単な作業:フォームを表示する前に、$data->getRole()
が"ROLE_"
で始まる場合は、この文字列を削除して残りの部分のみを表示してください。ユーザーがフォームを送信するときは、逆の作業を行います。名前の前に"ROLE_"
を追加します。変更されたデータを表示し、変更されたデータを更新するための正しいフォームイベント?
これを行うには最適な場所は何ですか?実際に私はPRE_SET_DATA
とPOST_BIND
を使用しています。 これは、この操作を実行する正しいイベントですか?まあ接頭辞「ROLE」せずに役割を読ん
$builder->addEventListener(FormEvents::PRE_SET_DATA,
function(DataEvent $event){
if(is_null($data = $event->getData()) || !$data->getId()) return;
$data->setRole(strtoupper(preg_replace('/^ROLE_/i', '',
$data->getRole())));
});
$builder->addEventListener(FormEvents::POST_BIND,
function(DataEvent $event) {
if(is_null($data = $event->getData()) || !$data->getId()) return;
$data->setRole('ROLE_' . strtoupper($data->getRole()));
});