diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/SymfonyPhpReferenceContributor.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/SymfonyPhpReferenceContributor.java index 731239454..f42c793f6 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/SymfonyPhpReferenceContributor.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/SymfonyPhpReferenceContributor.java @@ -31,6 +31,10 @@ public class SymfonyPhpReferenceContributor extends PsiReferenceContributor { new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerTrait", "get"), new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerTrait", "has"), + // Symfony 4 + new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController", "get"), + new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController", "has"), + new MethodMatcher.CallToSignature("\\Symfony\\Component\\DependencyInjection\\ContainerInterface", "get"), new MethodMatcher.CallToSignature("\\Symfony\\Component\\DependencyInjection\\ContainerInterface", "has"), new MethodMatcher.CallToSignature("\\Psr\\Container\\ContainerInterface", "get"), @@ -70,6 +74,11 @@ public class SymfonyPhpReferenceContributor extends PsiReferenceContributor { new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerTrait", "renderView"), new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerTrait", "stream"), + // Symfony 4 + new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController", "render"), + new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController", "stream"), + new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController", "renderView"), + new MethodMatcher.CallToSignature("\\Twig_Environment", "render"), new MethodMatcher.CallToSignature("\\Twig_Environment", "loadTemplate"), new MethodMatcher.CallToSignature("\\Twig_Environment", "getTemplateClass"), diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/php/PhpConfigReferenceContributor.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/php/PhpConfigReferenceContributor.java index 058c93cf4..0373e349e 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/php/PhpConfigReferenceContributor.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/php/PhpConfigReferenceContributor.java @@ -31,6 +31,9 @@ public void registerReferenceProviders(@NotNull PsiReferenceRegistrar psiReferen // Symfony 3.3 / 3.4 .addCall("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerTrait", "has") + + // Symfony 4 + .addCall("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController", "has") ); psiReferenceRegistrar.registerReferenceProvider(PhpElementsUtil.getMethodWithFirstStringPattern(), new PhpStringLiteralExpressionReference(ServiceIndexedReference.class) diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/container/util/ServiceContainerUtil.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/container/util/ServiceContainerUtil.java index 460da901f..7b4b7a45f 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/container/util/ServiceContainerUtil.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/container/util/ServiceContainerUtil.java @@ -50,6 +50,9 @@ public class ServiceContainerUtil { // Symfony 3.3 / 3.4 new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerTrait", "get"), + + // Symfony 4 + new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController", "get"), }; private static String[] LOWER_PRIORITY = new String[] { diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/form/FormGotoCompletionRegistrar.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/form/FormGotoCompletionRegistrar.java index 4c2f109d6..8d1eb9b5f 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/form/FormGotoCompletionRegistrar.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/form/FormGotoCompletionRegistrar.java @@ -99,6 +99,9 @@ public void register(@NotNull GotoCompletionRegistrarParameter registrar) { // Symfony 3.3 / 3.4 .withSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerTrait", "createForm") + // Symfony 4 + .withSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController", "createForm") + .withSignature("\\Symfony\\Component\\Form\\FormFactoryInterface", "create") .withSignature("\\Symfony\\Component\\Form\\FormFactory", "createBuilder") .match(); diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/routing/PhpRouteReferenceContributor.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/routing/PhpRouteReferenceContributor.java index 33eecd6d1..95e3f7423 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/routing/PhpRouteReferenceContributor.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/routing/PhpRouteReferenceContributor.java @@ -25,6 +25,10 @@ public class PhpRouteReferenceContributor extends PsiReferenceContributor { new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerTrait", "generateUrl"), new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerTrait", "redirectToRoute"), + // Symfony 4 + new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController", "generateUrl"), + new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController", "redirectToRoute"), + new MethodMatcher.CallToSignature("\\Symfony\\Component\\Routing\\Generator\\UrlGeneratorInterface", "generate"), }; @@ -33,7 +37,10 @@ public class PhpRouteReferenceContributor extends PsiReferenceContributor { new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller", "forward"), // Symfony 3.3 / 3.4 - new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerTrait", "forward") + new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerTrait", "forward"), + + // Symfony 4 + new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController", "forward"), }; @Override diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/security/VoterGotoCompletionRegistrar.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/security/VoterGotoCompletionRegistrar.java index 00a3f60ec..dd7988e3b 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/security/VoterGotoCompletionRegistrar.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/security/VoterGotoCompletionRegistrar.java @@ -62,6 +62,11 @@ public void register(@NotNull GotoCompletionRegistrarParameter registrar) { MethodMatcher.MethodMatchParameter arrayMatchParameter = new MethodMatcher.ArrayParameterMatcher(context, 0) .withSignature("Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller", "isGranted") .withSignature("Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller", "denyAccessUnlessGranted") + + // Symfony 4 + .withSignature("Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController", "isGranted") + .withSignature("Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController", "denyAccessUnlessGranted") + .withSignature("Symfony\\Component\\Security\\Core\\Authorization\\AuthorizationCheckerInterface", "isGranted") .match(); diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/variable/resolver/FormFieldResolver.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/variable/resolver/FormFieldResolver.java index 5c34741b0..a3e50f803 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/variable/resolver/FormFieldResolver.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/variable/resolver/FormFieldResolver.java @@ -81,7 +81,12 @@ public void resolve(Collection targets, Collection targets) { - if(methodReference != null && PhpElementsUtil.isMethodReferenceInstanceOf(methodReference, new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller", "createForm"), new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerTrait", "createForm"))) { + if(methodReference != null && PhpElementsUtil.isMethodReferenceInstanceOf( + methodReference, + new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller", "createForm"), + new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerTrait", "createForm"), + new MethodMatcher.CallToSignature("\\Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController", "createForm") + )) { PsiElement formType = PsiElementUtils.getMethodParameterPsiElementAt(methodReference, 0); if(formType != null) { PhpClass phpClass = FormUtil.getFormTypeClassOnParameter(formType);