@@ -379,6 +379,48 @@ use the ``isPrivateIp()`` method from the
379
379
$isPrivate = IpUtils::isPrivateIp($ipv6);
380
380
// $isPrivate = false
381
381
382
+ Matching a Request Against a Set of Rules
383
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
384
+
385
+ The HttpFoundation component provides some matcher classes that allow you to
386
+ check if a given request meets certain conditions (e.g. it comes from some IP
387
+ address, it uses a certain HTTP method, etc.):
388
+
389
+ * :class: `Symfony\\ Component\\ HttpFoundation\\ RequestMatcher\\ AttributesRequestMatcher `
390
+ * :class: `Symfony\\ Component\\ HttpFoundation\\ RequestMatcher\\ ExpressionRequestMatcher `
391
+ * :class: `Symfony\\ Component\\ HttpFoundation\\ RequestMatcher\\ HostRequestMatcher `
392
+ * :class: `Symfony\\ Component\\ HttpFoundation\\ RequestMatcher\\ IpsRequestMatcher `
393
+ * :class: `Symfony\\ Component\\ HttpFoundation\\ RequestMatcher\\ IsJsonMatcher `
394
+ * :class: `Symfony\\ Component\\ HttpFoundation\\ RequestMatcher\\ MethodRequestMatcher `
395
+ * :class: `Symfony\\ Component\\ HttpFoundation\\ RequestMatcher\\ PathRequestMatcher `
396
+ * :class: `Symfony\\ Component\\ HttpFoundation\\ RequestMatcher\\ PortRequestMatcher `
397
+ * :class: `Symfony\\ Component\\ HttpFoundation\\ RequestMatcher\\ SchemeRequestMatcher `
398
+
399
+ You can use them individually or combine them using the
400
+ :class: `Symfony\\ Component\\ HttpFoundation\\ ChainRequestMatcher `
401
+ class::
402
+
403
+ use Symfony\Component\HttpFoundation\ChainRequestMatcher;
404
+ use Symfony\Component\HttpFoundation\RequestMatcher\HostRequestMatcher;
405
+ use Symfony\Component\HttpFoundation\RequestMatcher\PathRequestMatcher;
406
+ use Symfony\Component\HttpFoundation\RequestMatcher\SchemeRequestMatcher;
407
+
408
+ // use only one criteria to match the request
409
+ $schemeMatcher = new SchemeRequestMatcher('https');
410
+ if ($schemeMatcher->matches($request)) {
411
+ // ...
412
+ }
413
+
414
+ // use a set of criteria to match the request
415
+ $matcher = new ChainRequestMatcher([
416
+ new HostRequestMatcher('example.com'),
417
+ new PathRequestMatcher('/admin'),
418
+ ]);
419
+
420
+ if ($matcher->matches($request)) {
421
+ // ...
422
+ }
423
+
382
424
Accessing other Data
383
425
~~~~~~~~~~~~~~~~~~~~
384
426
0 commit comments