evolutto/gregwar-form

提供 "entity_id" 类型(读作 "实体标识符")

3.0 2018-05-07 14:25 UTC

This package is auto-updated.

Last update: 2024-09-08 08:02:52 UTC


README

paypal

GregwarFormBundle 提供表单类型 "entity_id"。

安装

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

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

<?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', '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 许可证许可