lostedboy/symfony-form-standalone

Symfony 表单独立使用包装器

dev-master 2019-09-30 12:55 UTC

This package is not auto-updated.

Last update: 2024-09-24 13:30:13 UTC


README

这个库允许在不使用 symfony 框架且不依赖其依赖的情况下独立使用 symfony 表单。

当前依赖列表

  • symfony/form
  • symfony/templating

安装

composer require lostedboy/symfony-form-standalone

基本用法

创建表单

<?php
// index.php
use Symfony\Form\Standalone\FormBuilder;
use Symfony\Form\Standalone\Templating\FormTemplating;

// create form builder
$formBuilder = new FormBuilder();

// create form
$form = $formBuilder->create($formType, $mappedEntity);

...

// create templating handler
$formTemplating = new FormTemplating();

// get templating engine
$templating = $formTemplating->getTemplating();

// create form view
$formView = $form->createView();

// render form partial
echo $templating->render('form.html.php', array('form' => $formView));

渲染表单(见: Symfony 表单渲染

// form.html.php 
<?php echo $view['form']->form($form) ?>

渲染自定义

<?php
// index.php
use Symfony\Form\Standalone\Templating\FormTemplating;

$formTemplating = new FormTemplating(
    // register directories with forms usages here
    [
        __DIR__.'/directory/with/form/usages'
    ],
    // put form theme templates in some directory
    // register this directory in FormTemplating
    [
        __DIR__.'/directory/with/form/themes'
    ]
);

遵循 Symfony 指南

翻译

可以使用任何自定义翻译器。它应该实现 Symfony\Form\Standalone\Translation\TranslatorInterface

<?php
// index.php
use Symfony\Form\Standalone\Templating\FormTemplating;

$formTemplating = new FormTemplating([], [], new CustomFormTranslator());

验证

可以使用 Symfony 验证组件

安装 composer require symfony/validator 注册验证扩展

<?php
// index.php
use Symfony\Form\Standalone\FormBuilder;
use Symfony\Component\Validator\Validation;

// create form builder
$formBuilder = new FormBuilder();

// configure validator
$validator = Validation::createValidatorBuilder()
    ->addYamlMappings([
        // paths to validation files (optional) 
        __DIR__ . '/config/validation/some_entity.yml'
    ])
    ->getValidator();

// register extension
$formBuilder->addExtension(new ValidatorExtension($validator);

许可协议

此软件包受 MIT 许可协议的约束