2016-10-29 11 views
1

accountOwnerのユーザーアソシエーションを持つアカウント(会社のアカウントのような)エンティティがあります。symfony 3のフォームフィールドを条件付きで表示

ROLE_ADMINのアカウントオーナーとユーザーの両方がアカウントを編集できますが、ROLE_ADMINのユーザーのみアカウントオーナーを設定できます。

2つのフォームタイプが必要ですか?または、ユーザーロールに基づいて同じフォームに条件付きでaccountOwnerフィールドを表示できますか?

答えて

1

条件付きでaccountOwnerを関連付けることができます。 フォームを動的に変更する場合は、通常form eventsを使用します。

しかし、フォームのフィールドは、フォームにバインドされた実際のデータには依存しませんが、セキュリティコンテキストに、あなたは自分のフォームタイプに承認チェッカーを注入し、あなたが必要なフィールドを追加するかどうかを確認することができますので、:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add('always_present_field'); 
    $builder->add('another_always_present_field'); 

    if ($this->authorizationChecker->isGranted('ROLE_ADMIN')) { 
     $builder->add('conditional_field_if_current_user_is_admin'); 
    } 
} 
+0

が確認されました。後者のアプローチは素晴らしい仕事でした。 – Coder1

関連する問題