12
12
use Psr \Container \ContainerInterface ;
13
13
use Symfony \WebpackEncoreBundle \Asset \EntrypointLookupInterface ;
14
14
use Symfony \WebpackEncoreBundle \Asset \TagRenderer ;
15
+ use Symfony \WebpackEncoreBundle \Exception \EntrypointNotFoundException ;
15
16
use Twig \Extension \AbstractExtension ;
16
17
use Twig \TwigFunction ;
17
18
@@ -31,6 +32,7 @@ public function getFunctions(): array
31
32
new TwigFunction ('encore_entry_css_files ' , [$ this , 'getWebpackCssFiles ' ]),
32
33
new TwigFunction ('encore_entry_script_tags ' , [$ this , 'renderWebpackScriptTags ' ], ['is_safe ' => ['html ' ]]),
33
34
new TwigFunction ('encore_entry_link_tags ' , [$ this , 'renderWebpackLinkTags ' ], ['is_safe ' => ['html ' ]]),
35
+ new TwigFunction ('encore_entry_exists ' , [$ this , 'entryExists ' ]),
34
36
];
35
37
}
36
38
@@ -58,6 +60,19 @@ public function renderWebpackLinkTags(string $entryName, string $packageName = n
58
60
->renderWebpackLinkTags ($ entryName , $ packageName , $ entrypointName , $ attributes );
59
61
}
60
62
63
+ public function entryExists (string $ entryName , string $ entrypointName = '_default ' ): bool
64
+ {
65
+ try {
66
+ $ entrypointLookup = $ this ->getEntrypointLookup ($ entrypointName );
67
+ $ entrypointLookup ->getJavaScriptFiles ($ entryName );
68
+ $ entrypointLookup ->reset ();
69
+
70
+ return true ;
71
+ } catch (EntrypointNotFoundException $ e ) {
72
+ return false ;
73
+ }
74
+ }
75
+
61
76
private function getEntrypointLookup (string $ entrypointName ): EntrypointLookupInterface
62
77
{
63
78
return $ this ->container ->get ('webpack_encore.entrypoint_lookup_collection ' )
0 commit comments