kunicmarko / form-annotation-bundle
该软件包已被 废弃 且不再维护。没有建议的替代软件包。
这是一个为 symfony 表单添加辅助注解的 Symfony Bundle。
v1.0.0
2018-01-22 21:54 UTC
Requires
- php: ^7.1
- doctrine/annotations: ^1.6
- sensio/framework-extra-bundle: ^3.0 || ^4.0 || ^5.0
- symfony/dependency-injection: ^3.3 || ^4.0
- symfony/event-dispatcher: ^3.3 || ^4.0
- symfony/form: ^3.3 || ^4.0
- symfony/http-foundation: ^3.3 || ^4.0
- symfony/http-kernel: ^3.3 || ^4.0
Requires (Dev)
This package is auto-updated.
Last update: 2020-11-16 04:33:30 UTC
README
添加表单注解,帮助您在使用表单时避免样板代码。
文档
安装
1. 使用 composer 添加依赖
composer require kunicmarko/form-annotation-bundle
2. 在您的 Kernel 中注册该 Bundle
$bundles = array(
// ...
new KunicMarko\FormAnnotationBundle\FormAnnotationBundle(),
);
如何使用
首先,选择您想要使用的 注解 并将其添加到控制器操作中,您必须提供表单类和参数名称,参数也必须有类型。
虽然 FOSRestBundle 不是依赖项,但我的示例使用了 FOSRestBundle,这主要用于与之结合使用。
之前
public function createAction(Request $request, UserService $userService)
{
$form = $this->createForm(CreateUserType::class, $user = new User());
$form->submit($request->request->all());
if ($form->isValid()) {
$userService->createUser($user);
return View::create($user, Response::HTTP_CREATED);
}
return View::create($form);
}
之后
use KunicMarko\FormAnnotationBundle\Annotation\Form;
use FOS\RestBundle\Controller\Annotations\View;
use Symfony\Component\HttpFoundation\Response;
/**
* @Form\Post(
* formType=CreateUserType::class,
* parameter="user"
* )
*
* @View(statusCode=Response::HTTP_CREATED)
*/
public function createAction(User $user, UserService $userService)
{
$userService->createUser($user);
return $user;
}
请求仅在表单中的所有内容都有效时才进入控制器操作,否则将返回验证错误。
注解
在将注解添加到操作时,您可以设置 3 个选项
formType
- 您的表单类型的完全限定名。parameter
- 您将在操作中使用的参数名称。(参数必须有类型)clearMissing
- 如果某些值未发送,则默认将其设置为空值,用于POST
/PUT
,但对于PATCH
,将忽略此值。您可以根据自己的需要控制此操作。
POST
use KunicMarko\FormAnnotationBundle\Annotation\Form;
use FOS\RestBundle\Controller\Annotations\View;
use Symfony\Component\HttpFoundation\Response;
/**
* @Form\Post(
* formType=CreateUserType::class,
* parameter="user"
* )
*
* @View(statusCode=Response::HTTP_CREATED)
*/
public function createAction(
User $user,
UserService $userService
) {
$userService->createUser($user);
return $user;
}
在 POST
中,我们根据您提供的类型获取参数,创建新的对象并从请求中填充数据,如果一切有效,我们将填充操作中的参数并允许请求进入操作,否则返回表单错误。
Patch/Put
use KunicMarko\FormAnnotationBundle\Annotation\Form;
use FOS\RestBundle\Controller\Annotations\View;
use Symfony\Component\HttpFoundation\Response;
/**
* @Form\Put(
* formType=UpdateUserType::class,
* parameter="user"
* )
*
* @View(statusCode=Response::HTTP_OK)
*/
public function updateAction(
User $user,
UserService $userService
) {
$userService->updateUser($user);
return $user;
}
在这里,我们依赖于 Symfony ParamConverter,并期望您提供的参数已经是一个填充了的对象。如果您将 {id}
参数添加到路由中,并使用 Doctrine 实体进行类型提示,Symfony ParamConverter 将自动完成此操作。如果一切有效,我们允许请求进入操作,否则返回表单错误。