taveo / form-bundle
此包已被废弃且不再维护。未建议替代包。
GregwarFormBundle 提供表单类型 "entity_id"
dev-master
2012-08-09 15:22 UTC
Requires
- php: >=5.3.2
- symfony/framework-bundle: 2.1.*,<2.2
This package is not auto-updated.
Last update: 2018-04-29 08:49:26 UTC
README
GregwarFormBundle 提供表单类型 "entity_id"
安装
此版本的包需要 Symfony 2.1。
1) 使用 Composer 下载 FormBundle
在您的 composer.json 中添加 FormBundle
{
"require": {
"taveo/form-bundle": "*"
}
}
运行以下命令让 Composer 下载此包:
$ php composer.phar update taveo/form-bundle
2) 并在您的 app/AppKernel.php 中注册此包
<?php //... public function registerBundles() { $bundles = array( ... new Gregwar\FormBundle\GregwarFormBundle(), ... ); ...
将以下配置添加到您的 app/config/config.yml
gregwar_form: ~
使用方法
entity_id 是包含实体 ID 的字段,这假设您设置了 JavaScript 或任何 UI 逻辑来自动填充它。
用法类似于实体字段类型,但查询构建器必须返回一个唯一结果。一个完整示例:
<?php //... $builder ->add('city', 'entity_id', array( 'class' => 'Project\Entity\City', 'query_builder' => function(EntityRepository $repo, $id) { return $repo->createQueryBuilder('c') ->where('c.id = :id AND c.available = 1') ->setParameter('id', $id) } )) ;
注意,如果您没有提供任何查询构建器,将使用 ->find($id)。
您也可以选择显示字段,通过将 hidden 选项传递为 false。
<?php //... $builder ->add('city', 'entity_id', array( 'class' => 'Project\Entity\City', 'hidden' => false, 'label' => 'Enter the City id' )) ;
使用 property 选项,您还可以使用除主键之外的另一个标识符
<?php //... $builder ->add('recipient', 'entity_id', array( 'class' => 'Project\Entity\User', 'hidden' => false, 'property' => 'login', 'label' => 'Recipient login' )) ;
注意
此实现可能存在错误,此包只是作为一个非常有用的表单字段类型的想法,适用于 Symfony2 项目。
许可
此包受 MIT 许可证保护