malwarebytes/form-metadata-bundle

使用表单构建器中的注释,例如 @Form\Field("text")。将元数据与实体类关联。有助于创建更通用的控制器,可以处理动态实体(如CMS场景)。

安装: 710

依赖: 0

建议: 0

安全: 0

星星: 1

关注者: 7

分支: 10

开放问题: 1

类型:symfony-bundle

1.1.0 2014-01-02 21:04 UTC

This package is not auto-updated.

Last update: 2021-09-27 11:50:44 UTC


README

通过从其他地方定义的元数据(如实体中的注释)简化表单字段的配置。允许通过控制器以更通用的方式处理表单类型,使其能够处理动态实体/表单(如用于CMS站点)。

该项目是从FlintLabs/FormMetadataBundle分叉而来,看起来已经被遗弃。

查看表单字段注释参考

注意:人们可能希望考虑将表单配置在控制器外部作为最佳实践,使用Symfony2抽象表单。

注释示例

标准表单构建器

->add('dueDate', 'date', array('widget' => 'single_text'))

在实体中使用注释

/**
 * @Form\Field("date", widget="single_text")
 */

分组示例

/**
 * @Form\Field("date", widget="single_text")
 * @Form\FieldGroup("example")
 */

嵌入实体示例

/**
 * Refer to https://symfony.com.cn/doc/current/book/forms.html#embedded-forms
 *
 * You have to generate your own FormType in current implementation
 *
 * @Form\FormType("Acme\TaskBundle\Form\Type\CategoryType")
 */

带有一些基本表单注释的实体

use Malwarebytes\FormMetadataBundle\Configuration as Form;
use Symfony\Bundle\Validator\Constraints as Assert;

class Contact
{
    /**
     * @Form\Field("text")
     * @Assert\NotBlank()
     */
    public $name;

    /**
     * @Form\Field("textarea")
     */
    public $message;
}

简单控制器

class MyController
{
    public function contactAction()
    {
        $contact = new Contact();
        $form = $this->get('form_metadata.mapper')->createFormBuilder($contact)->getForm();

        if ($request->getMethod() == 'POST') {
            $form->bindRequest($request);

            if ($form->isValid()) {
                // perform some action, such as saving the task to the database
                return $this->redirect($this->generateUrl('task_success'));
            }
        }
    }
}

安装

Composer安装

php composer.phar require malwarebytes/form-metadata-bundle

注册包引用

// app/AppKernel.php
public function registerBundles()
{
    return array(
        // ...
        new Malwarebytes\FormMetadataBundle\FlintLabsFormMetadataBundle(),
        // ...
    );
}