Symfony 6.3 中的新功能:查询参数映射器【转载】 CJayhe Symfony博客 438 views 在Symfony 6.3中,我们引入了一个功能,使用and属性将[请求数据映射到类型化对象](https://symfony.com/blog/new-in-symfony-6-3-mapping-request-data-to-typed-objects)中。然而 有时,您希望将单个请求数据映射到特定的控制器参数。`#[MapRequestPayload]#[MapQueryString]` Symfony允许将路由参数映射到控制器参数,因为它 第一个版本。在Symfony 6.3中,您还可以将**查询字符串参数映射到**特定的控制器参数。为此,请使用新属性:`#[MapQueryParameter]` ```php #[Route(path: '/', name: 'admin_dashboard')] public function indexAction( #[MapQueryParameter] array $ids, #[MapQueryParameter] string $firstName, #[MapQueryParameter] bool $required, #[MapQueryParameter] int $age, #[MapQueryParameter] string $category = '', #[MapQueryParameter] ?string $theme = null, ) ``` 如果传入请求的查询字符串为 , 此代码将使控制器参数具有以下值:`/?ids[]=1&ids[]=2&firstName=Ruud&required=3&age=123` ```php $ids = ['1', '2'] $firstName = "Ruud" $required = false $age = 123 $category = '' $theme = null ``` 该属性进行查询字符串的转换 参数(始终是一个字符串)根据 控制器参数的类型(类似于调用、等。 但由Symfony自动化)。`#[MapQueryParameter]$request->query->getInt('...') $request->query->getAlpha('...')` ```php // this ensures that the array only contains integer values #[MapQueryParameter(filter: \FILTER_VALIDATE_INT)] array $ids // this ensures that the string follows some specific pattern #[MapQueryParameter(filter: \FILTER_VALIDATE_REGEXP, options: ['regexp' => '/^\w++$/'])] string $name ``` 原文链接 https://symfony.com/blog/new-in-symfony-6-3-query-parameters-mapper 帮助PHPZlc项目! 与任何开源项目一样, 贡献代码 或 文档 是最常见的帮助方式, 但我们也有广泛的 赞助机会。 0 赞赏 加入技术群 评论 去登录