symftony / form-handler
一个 Symfony 表单处理器
v1.0.0
2024-02-05 20:35 UTC
Requires
- php: >=8.1
- symfony/form: ^6.1
Requires (Dev)
- phpspec/prophecy: ^1.0@dev
- phpspec/prophecy-phpunit: ^2.1
- phpunit/phpunit: ^9.1
- symfony/config: ^6.1
- symfony/contracts: ^3.5@dev
- symfony/dependency-injection: ^6.1
- symfony/http-kernel: ^6.1
- symfony/serializer: ^6.1
- symfony/translation: ^6.1
- symfony/validator: ^6.1
Suggests
- symfony/config: ^6.1
- symfony/dependency-injection: ^6.1
- symfony/http-kernel: ^6.1
- symfony/serializer: ^6.1
- symfony/translation: ^6.1
This package is not auto-updated.
Last update: 2024-09-16 23:25:55 UTC
README
Symfony 表单处理器抽象
演示
您可以在 演示表单处理器 上尝试这个库
安装
推荐通过 Composer 安装 FormHandler。
# Install Composer curl -sS https://getcomposer.org/installer | php
php composer require symftony/form-handler
安装后,您需要引入 Composer 的自动加载器
require 'vendor/autoload.php';
文档
此包提供内置的 FormHandler 和 TypeExtension。
TypeExtension 为 Symfony FormType 添加选项
- handler_invalid = true 抛出 InvalidFormException
- handler_not_submitted = true 抛出 NotSubmittedFormException
- handler_transformation_failed = true 抛出 TransformationFailedFormException
如果您在此选项中设置数据而不是 true,则 FormHandler::handle 如果情况合适则返回它
在 Symfony 中使用
将包添加到您的 kernel app/AppKernel.php
class AppKernel extends Kernel { public function registerBundles() { $bundles = [ ... new Symftony\FormHandler\FormBundle\FormHandlerBundle(), ... ]; } ...
在控制器中使用内置的 FormHandler
public function yourAction(Request $request) { $formHandler = $this->get('form_handler.form_handler.default'); // Throw exception if the form is NotSubmit/NotValid/TransformFailed $form = $formHandler->createForm(TextType::class, 'my-value', 'My default data', [ 'method' => 'GET', 'handler_invalid' => true, 'handler_not_submitted' => true, 'handler_transformation_failed' => true, ]); // You get the $form->getData() if all succeed $result = $formHandler->handleRequest($form, $request); return $this->render('default/index.html.twig', [ 'form' => $form->createView(), 'result' => $result, ]); }
您可以为处理异常添加 try/catch 或实现一个 KernelException
扩展 FormHandler
创建 YourFormHandler
并扩展 FormHandler
<?php namespace AppBundle\Form\Handler; use Symfony\Component\HttpFoundation\Request; use Symftony\FormHandler\FormHandler; class YourFormHandler extends FormHandler { public function createFromRequest(Request $request, $notSubmitted = true, $invalid = true) { $form = $this->createForm(TextType::class, 'my-value', 'My default data', [ 'handler_not_submitted' => $notSubmitted, 'handler_invalid' => $invalid, ]); $result = $this->handleRequest($form, $request); // DO whatever you want with your $result return $result } }
声明为服务
services: app.form_handler.your: class: AppBundle\Form\Handler\YourFormHandler tags: - { name: 'form.handler' }
/!\ 不要忘记用 'form.handler' 标签或自己注入 FormFactory
使用它!!!
public function yourAction(Request $request) { return $this->render('default/index.html.twig', [ 'result' => $this->get('app.form_handler.your')->createFromRequest( $request, 'my data if form wasn\'t post' // result if the form isn't submitted true // Gonna throw Exception when the form isn't valid ), ]); }