How to implement self defined request attributes in TYPO3 extensions - Stack Overflow

TYPO3 12 and later use request attributes to store internal informations.How does it work to add self

TYPO3 12 and later use request attributes to store internal informations. How does it work to add self defined attributes in TYPO3 extensions? I could not find anything in the docs.

Request Attributes

TYPO3/typo3_src-13.2.1/typo3/sysext/core/Classes/Http/ServerRequest.php:

namespace TYPO3\CMS\Core\Http;

class ServerRequest extends Request implements ServerRequestInterface
{
    protected array $attributes = [];

TYPO3 12 and later use request attributes to store internal informations. How does it work to add self defined attributes in TYPO3 extensions? I could not find anything in the docs.

Request Attributes

TYPO3/typo3_src-13.2.1/typo3/sysext/core/Classes/Http/ServerRequest.php:

namespace TYPO3\CMS\Core\Http;

class ServerRequest extends Request implements ServerRequestInterface
{
    protected array $attributes = [];
Share Improve this question asked Nov 15, 2024 at 19:40 Franz HolzingerFranz Holzinger 99811 silver badges24 bronze badges 1
  • This is a replacement for: Breaking: #102600 TSFE->applicationData removed – Franz Holzinger Commented Nov 20, 2024 at 17:05
Add a comment  | 

2 Answers 2

Reset to default 2

You can use a PSR-15 Middleware to achive that.

All you need is a Middleware class like:

Classes/Middleware/RequestEnrichingMiddleware.php

<?php

declare(strict_types=1);

namespace VENDOR\ExtName\Middleware;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;

class RequestEnrichingMiddleware implements MiddlewareInterface
{

    public function process(
        ServerRequestInterface $request,
        RequestHandlerInterface $handler,
    ): ResponseInterface {

        $myCustomDataArray = [
            'Foo' => 'Bar',
            'Foooo' => 'Baar',
        ];

        $request = $request->withAttribute('myCustomDataArray', $myCustomDataArray);

        return $handler->handle($request);
    }
}

And then you must register this middleware in: Configuration/RequestMiddlewares.php

<?php

return [
    'frontend' => [
        'vendor/my-middleware-identifier' => [
            'target' => \VENDOR\ExtName\Middleware\RequestEnrichingMiddleware::class,
            'after' => [
                'typo3/cms-core/response-propagation',
            ],
        ],
    ],
];

For more information see:
https://docs.typo3./m/typo3/reference-coreapi/main/en-us/ApiOverview/RequestLifeCycle/Middlewares.html#enriching-the-request

You can use withAttribute in PSR middlewares to enrich the request. This isn't really TYPO3 specific, but a general PSR approach. See:

https://docs.typo3./m/typo3/reference-coreapi/main/en-us/ApiOverview/RequestLifeCycle/Middlewares.html#enriching-the-request

You can set/get any attribute (don't use a name that TYPO3 already uses though).

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745673804a4639563.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信