nebkam / symfony-traits
辅助特性,简化在Symfony中编写API
4.1.0
2024-08-09 05:45 UTC
Requires
- ext-json: *
- symfony/form: 5.* || 6.* || 7.*
- symfony/http-foundation: 5.* || 6.* || 7.*
- symfony/http-kernel: 5.* || 6.* || 7.*
- symfony/validator: 5.* || 6.* || 7.*
Requires (Dev)
- symfony/framework-bundle: 5.* || 6.* || 7.*
- symfony/phpunit-bridge: 5.* || 6.* || 7.*
README
Symfony Traits
为加快在Symfony中开发API而提供的一些辅助特性
FormTrait
handleJSONForm
- 控制器辅助方法,用于处理在
POST
、PUT
或PATCH
请求内容中发送的JSON数据 - 一般来说,发送JSON内容比表单更灵活,适合与JS框架一起进行CRUD操作。
public function create(Request $request) { $entity = new Entity(); $this->handleJSONForm($request, $entity, EntityType::class, $options = [], $clearMissingFields = true); // persist and flush $entity
public function edit(Request $request,Entity $entity) { $this->handleJSONForm($request, $entity, EntityType::class, $options = [], $clearMissingFields = true); // flush entity
handleForm
- 控制器辅助方法,用于处理
GET
或POST
请求中的传统表单数据 - 我建议只有在JSON不适用的情况下(例如
GET
参数)才使用传统表单数据。
public function example(Request $request) { $domain = new Domain(); if ($request->query->count() > 0) { $this->handleForm($request, $params, DomainType::class, $options = [], $clearMissingFields = true); } // do something with $domain
handleUpload
- 控制器辅助方法,用于验证单个文件上传
- 当您只需要一个文件而不是整个表单时,它是File约束的一个轻量级替代方案。
public function uploadImage(Request $request) { $file = $this->handleUpload($request, 'image'); // do something with $file }
ValidationExceptionListener
由于此特性中所有handle*
方法都会抛出Nebkam\SymfonyTraits\ValidationException
,您必须通过在控制器中使用try {..} catch
或者在全局异常监听器中捕获它。为了简化这个过程,此包包含一个示例异常监听器,它会以JSON格式返回验证错误。您只需将其注册为服务即可。
Nebkam\SymfonyTraits\EventListener\ValidationExceptionListener: tags: - { name: kernel.event_listener, event: kernel.exception }