@@ -211,8 +211,49 @@ You can do this by defining a new HTML sanitizer in the configuration:
211
211
);
212
212
213
213
This configuration defines a new ``html_sanitizer.sanitizer.app.post_sanitizer ``
214
- service. This service will be :doc: `autowired </service_container/autowiring >`
215
- for services having an ``HtmlSanitizerInterface $appPostSanitizer `` parameter.
214
+ service. Now you have two ways of injecting it in any service or controller:
215
+
216
+ **(1) Use a specific argument name **
217
+
218
+ Type-hint your construtor/method argument with ``HtmlSanitizerInterface `` and name
219
+ the argument using this pattern: "HTML sanitizer name in camelCase". For example, to
220
+ inject the ``app.post_sanitizer `` defined earlier, use an argument named ``$appPostSanitizer ``::
221
+
222
+ // src/Controller/ApiController.php
223
+ namespace App\Controller;
224
+
225
+ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
226
+ use Symfony\Component\HtmlSanitizer\HtmlSanitizerInterface;
227
+
228
+ class BlogController extends AbstractController
229
+ {
230
+ public function __construct(
231
+ private HtmlSanitizerInterface $appPostSanitizer,
232
+ ) {
233
+ }
234
+
235
+ // ...
236
+ }
237
+
238
+ **(2) Use the ``#[Target]`` attribute **
239
+
240
+ When :ref: `dealing with multiple implementations of the same type <autowiring-multiple-implementations-same-type >`
241
+ the ``#[Target] `` attribute helps you select which one to inject. Symfony creates
242
+ a target with the same name as the HTML sanitizer::
243
+
244
+ // ...
245
+ use Symfony\Component\DependencyInjection\Attribute\Target;
246
+
247
+ class BlogController extends AbstractController
248
+ {
249
+ public function __construct(
250
+ #[Target('app.post_sanitizer')]
251
+ private HtmlSanitizerInterface $sanitizer,
252
+ ) {
253
+ }
254
+
255
+ // ...
256
+ }
216
257
217
258
Allow Element Baselines
218
259
~~~~~~~~~~~~~~~~~~~~~~~
0 commit comments