admin管理员组文章数量:1435859
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
2 Answers
Reset to default 2You 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).
本文标签: How to implement self defined request attributes in TYPO3 extensionsStack Overflow
版权声明:本文标题:How to implement self defined request attributes in TYPO3 extensions - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745673804a2669728.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论