あなたの時間のためにこんにちはallとthansk。security.authorization_checkerサービスを呼び出してください
私はSymfony 3.0.2
で働いていると、クラスで私は自分のアプリケーション に接続されている人のROLE_を見るためにサービスsecurity.authorization_checkerを取得しようとしているが、私はこのエラーを持っている:
をしようとしましたクラス "AppBundle \ Form \ RegistrationType"の "get"という未定義のメソッドを呼び出すことができます。 電話をかけようとしましたか? "getBlockPrefix"、 "getName"または "getParent"?
class RegistrationType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options){
$roles = new LoadRoles();
// $container = new Container();
// $this->denyAccessUnlessGranted('ROLE_ADMIN');
//LOAD ROLES FOR SUPER ADMIN
if($this->get('security.authorization_checker')->isGranted('ROLE_SUPER_ADMIN')){
$roles->getRolesForAdmin($builder, $options);
}
//LOAD ROLES FOR ADMIN
if($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')){
$roles->getRolesForManager($builder, $options);
}
//LOAD ROLES FOR ASSOCIATION
if($this->get('security.authorization_checker')->isGranted('ROLE_ASSOCIATION')){
$roles->getRolesForAssociation($builder, $options);
}
}
probblemは次の場所にあります。$this->get('security.authorization_checker')->isGranted('ROLE_SUPER_ADMIN')
機能は、コントローラ を拡張していないため、このサービスにアクセスする方法がある場合、私は思ったんだけどGET()関数を認識しませんか?
$form = $this->createForm($form, $item, array(
'authService' => $this->get('security.authorization_checker')
));
フォームで:
public function configureOptions(OptionsResolver $resolver)
{
$resolver
//..
->setRequired('authService')
;
}
あなたは今buildForm機能であなたのサービスにアクセスすることができます:私はあなたのコントローラから私の Sincerly
あなたはあなたの*コントローラ*内でそれを呼び出そうとしていません、あなたはあなたの中でそれを呼び出そうとしていますr * FormType * - それは違いです。 FormTypeは通常、サービスコンテナにアクセスできません。おそらく、質問を編集して、達成しようとしていることを教えてください。 – ccKep
@ccKepご回答ありがとうございます投稿を編集します – Ahmed
フォームタイプをサービスとして定義し、権限チェッカーを挿入してください。http://symfony.com/doc/current/form/form_dependencies.html#define -your-form-as-a-service認可チェッカーをオプションとして渡すこともできます。 – Cerad