taveo/form-bundle

此包已被废弃且不再维护。未建议替代包。

GregwarFormBundle 提供表单类型 "entity_id"

安装: 213

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 1

分支: 26

类型:symfony-bundle

dev-master 2012-08-09 15:22 UTC

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 许可证保护