corleonis/formmetadata

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

该软件包的官方仓库似乎已消失,因此软件包已被冻结。

安装次数: 17,662

依赖项: 0

建议者: 0

安全性: 0

星标: 1

关注者: 1

分支: 11

类型:symfony-bundle

1.5.5 2014-12-03 08:36 UTC

This package is not auto-updated.

Last update: 2021-03-29 09:11:53 UTC


README

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

该项目是从看起来已被放弃的FlintLabs/FormMetadataBundle分叉的。

请参阅表单字段的注解参考

注意:人们可能需要考虑将表单配置外部于控制器作为最佳实践,使用Symfony2 Abstract Forms。

注解示例

标准表单构建器

->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 Corleonis\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 corleonis/formmetadata

注册软件包引用

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