gregwar/form-bundle

提供“entity_id”类型(读取“实体标识”)

2.7 2015-06-02 15:43 UTC

This package is auto-updated.

Last update: 2024-08-24 04:44:28 UTC


README

paypal

GregwarFormBundle 提供表单类型 "entity_id"

安装

要安装 GregwarFormBundle,请运行 composer require gregwar/form-bundle

然后,在应用程序内核中注册该捆绑包

<?php
// app/AppKernel.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', EntityIdType::class, 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', EntityIdType::class, array(
        'class' => 'Project\Entity\City',
        'hidden' => false,
        'label' => 'Enter the City id'
    ))
    ;

使用 property 选项,您还可以使用除主键之外的其他标识符

<?php
//...
$builder
    ->add('recipient', EntityIdType::class, array(
        'class' => 'Project\Entity\User',
        'hidden' => false,
        'property' => 'login',
        'label' => 'Recipient login'
    ))
    ;

注意事项

这个实现可能存在错误,这个包只是作为表单字段类型的一个想法,这可能对 Symfony2 项目非常有用。

许可证

此捆绑包受 MIT 许可证约束