bu / extra-param-converter-bundle
Sensio2 扩展包,它扩展了 Sensio ParamConverter 功能,允许转换简单的 GET 和复杂的 POST 数据
1.0.1
2014-10-17 18:21 UTC
Requires
- php: >=5.3.2
- doctrine/orm: ~2.2,>=2.2.3
- sensio/framework-extra-bundle: 2.3.*
- symfony/framework-bundle: >=2.1,<2.4-dev
This package is not auto-updated.
Last update: 2024-09-14 14:24:29 UTC
README
BuExtraParamConverterBundle 扩展了 Sensio ParamConverter 功能,允许将简单的 GET 和复杂的 POST 数据转换为实体,解码 JSON 数据并从数据中移除标签。
需要 SensioFrameworkExtraBundle。
安装
使用 composer 添加包
composer require bu/extra-param-converter-bundle dev-master
在 AppKernel.php 中注册包
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Bu\ExtraParamConverterBundle\BuExtraParamConverterBundle(), ); }
Sensio ParamConverter 应该被启用,即在您的应用程序配置中参数 sensio_framework_extra.request.converters
应设置为 true(默认已设置)。
使用
获取转换器
您不需要编写任何注解,以下代码将适用于任何带有 user
参数的 GET 请求,例如 "/getUserDetails?user=123"
public function detailsAction(User $user) { ... }
其中 123 是用户 ID。如果找不到此 ID 的用户,它将抛出 NotFoundHttpException。
POST 转换器
use Bu\ExtraParamConverterBundle\Configuration\ExtraParamConverter; /** * @ExtraParamConverter("data", jsonData=true, stripTags=true, namespace="App", entities={"groups"="Group", "role"="Role"}) */ public function saveUserAction(array $data) { // $data['groups'] ... }
在这个例子中
- 原始 POST 数据将被 JSON 解码(jsonData 默认为 false,用于标准表单提交)
- 所有字符串值都将被过滤(stripTags 默认为 false)
- 所有 "groups" 将转换为 "Group" 实体,数组 [id1, id2, id3] - 转换为 "App:Group" 实体的数组
- 所有 "role" 将转换为 "Role" 实体,单个值转换为单个实体
- 所有内容都将递归地处理到最深层
- 结果将可在 $data 中使用(由注解中的第一个未命名的参数配置)
- 在不正确的几种情况下会抛出异常
- 无效的 JSON 数据,无效的 POST 数据
- 实体未定义命名空间(如果您只想进行 jsonDecode/stripTags,可以同时省略它们)
- 在数据中找不到为实体定义的键
- 找不到任何实体
建议为您的包设置 doctrine 映射别名
# Doctrine Configuration
doctrine:
orm:
mappings:
ApplicationMySuperBundle:
alias: My
这将允许您使用简短的命名空间 "My" 而不是长的自动生成的 "ApplicationMySuperBundle"。
许可证
此包受 MIT 许可证的保护。