corleonis / formmetadata
使用表单构建器中的注解,例如 @Form\Field("text")。将元数据与实体类相关联。有助于创建更通用的控制器,可以处理动态实体(例如CMS场景)。
该软件包的官方仓库似乎已消失,因此软件包已被冻结。
1.5.5
2014-12-03 08:36 UTC
Requires
- php: >=5.3.3
Requires (Dev)
- doctrine/annotations: 1.1.2
- symfony/symfony: ~2.3
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(),
// ...
);
}