Skip to content

Commit 76fa730

Browse files
committed
Add function and filter to StimulusTwigExtension
1 parent 965925c commit 76fa730

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

src/Twig/StimulusTwigExtension.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
use Symfony\WebpackEncoreBundle\Dto\StimulusActionsDto;
1313
use Symfony\WebpackEncoreBundle\Dto\StimulusControllersDto;
14+
use Symfony\WebpackEncoreBundle\Dto\StimulusOutletsDto;
1415
use Symfony\WebpackEncoreBundle\Dto\StimulusTargetsDto;
1516
use Twig\Environment;
1617
use Twig\Extension\AbstractExtension;
@@ -25,6 +26,7 @@ public function getFunctions(): array
2526
new TwigFunction('stimulus_controller', [$this, 'renderStimulusController'], ['needs_environment' => true, 'is_safe' => ['html_attr']]),
2627
new TwigFunction('stimulus_action', [$this, 'renderStimulusAction'], ['needs_environment' => true, 'is_safe' => ['html_attr']]),
2728
new TwigFunction('stimulus_target', [$this, 'renderStimulusTarget'], ['needs_environment' => true, 'is_safe' => ['html_attr']]),
29+
new TwigFunction('stimulus_outlet', [$this, 'renderStimulusOutlet'], ['needs_environment' => true, 'is_safe' => ['html_attr']]),
2830
];
2931
}
3032

@@ -34,6 +36,7 @@ public function getFilters(): array
3436
new TwigFilter('stimulus_controller', [$this, 'appendStimulusController'], ['is_safe' => ['html_attr']]),
3537
new TwigFilter('stimulus_action', [$this, 'appendStimulusAction'], ['is_safe' => ['html_attr']]),
3638
new TwigFilter('stimulus_target', [$this, 'appendStimulusTarget'], ['is_safe' => ['html_attr']]),
39+
new TwigFilter('stimulus_outlet', [$this, 'appendStimulusOutlet'], ['is_safe' => ['html_attr']]),
3740
];
3841
}
3942

@@ -153,6 +156,20 @@ public function renderStimulusTarget(Environment $env, $controllerName, string $
153156
return $dto;
154157
}
155158

159+
/**
160+
* @param string $controllerName The Stimulus controller name
161+
* @param string $outletName The outlet name
162+
* @param string $selector A CSS selector
163+
*/
164+
public function renderStimulusOutlet(Environment $env, string $controllerName, string $outletName, string $selector): StimulusOutletsDto
165+
{
166+
$dto = new StimulusOutletsDto($env);
167+
168+
$dto->addOutlet($controllerName, $outletName, $selector);
169+
170+
return $dto;
171+
}
172+
156173
/**
157174
* @param string $controllerName the Stimulus controller name
158175
* @param string|null $targetNames The space-separated list of target names if a string is passed to the 1st argument. Optional.
@@ -163,4 +180,16 @@ public function appendStimulusTarget(StimulusTargetsDto $dto, string $controller
163180

164181
return $dto;
165182
}
183+
184+
/**
185+
* @param string $controllerName The Stimulus controller name
186+
* @param string $outletName The outlet name
187+
* @param string $selector A CSS selector
188+
*/
189+
public function appendStimulusOutlet(StimulusOutletsDto $dto, string $controllerName, string $outletName, string $selector): StimulusOutletsDto
190+
{
191+
$dto->addOutlet($controllerName, $outletName, $selector);
192+
193+
return $dto;
194+
}
166195
}

0 commit comments

Comments
 (0)