フォームを要求するユーザーの役割に応じてフォームをカスタマイズする正しい方法はありますか?Symfony2/3のユーザ役割に基づいてフォームフィールドをカスタマイズする方法は?
私のシナリオはとてもシンプルです。ユーザーにROLE_ADMIN
が与えられていない場合、いくつかのフィールドを非表示にする必要があります。 Twigのフィールド表示を避けようとしましたが、フォームビルダーがこのチェックをバイパスするため、
{% if is_granted('ROLE_ADMIN') %}
{{form_row(form.field)}}
{% endif %}
は無効です。
symfonyのバージョン:2.8.2
EDIT
おかげで、私は解決策見つけた@Rooneyl suggestionに:最初は
は、あなたがの役割を追加する必要があります'オプションパラメータのキー。ですから、configureOptions()の$options['role']
は常にROLE_USERです。
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'MyBundle\Entity\Ticket',
'role' => 'ROLE_USER'
));
}
は、その後、あなたがgetRoles()
配列を渡す必要がコントローラに:
$user_roles = $this->getUser()->getRoles();
$form = $this->createForm('MyBundle\Form\TicketType', $ticket, array('role' => $user_roles));
は単純に素晴らしいコード – Rooneyl