gpt4 book ai didi

symfony - 如何在symfony2中以表单类型调用实体存储库的功能

转载 作者:行者123 更新时间:2023-12-02 08:40:53 25 4
gpt4 key购买 nike

我想在表单类型类中调用函数。函数生成数组并写在实体存储库类中。使用该数组,我将生成动态表单字段。这是实体存储库类函数。

public static $roleNameMap = array(
self::ROLE_SUPER_ADMIN => 'superAdmin',
self::ROLE_MANAGEMEN => 'management',
self::ROLE_MANAGERS => 'manager',
self::ROLE_IT_STAFF => 'itStaff',
self::ROLE_CS_CUSTOMER => 'csCustomer',
self::ROLE_CS => 'cs',
self::ROLE_DEALER => 'dealer',
self::ROLE_ACCOUNT_STAFF => 'accountStaff',
self::ROLE_BROKER_USER => 'staff',
);

public function getGroupListArray()
{
$qb = $this->createQueryBuilder('g')
->orderBy('g.hierarchy','ASC');
$query = $qb->getQuery();
$groupList = $query->execute();
$roleNameMap = array();
foreach ($groupList as $role){
$roleNameMap[$role->getId()] = $role->getRole();
}

return $roleNameMap;
}

下面是我的表单生成器类,我想在其中调用上面的实体存储库函数。

public function buildForm(FormBuilderInterface $builder, array $options) {

$builder->add('routeId', 'hidden');

foreach (GroupListRepository::$roleNameMap as $key=>$value){
$builder->add($value, 'checkbox',array('label' => '', 'required' => false,));
}
}

我能够获得上面代码中显示的静态变量,但是,我很困惑我应该如何访问 symfony2 中的表单构建器类中的存储库函数。

提前致谢。

最佳答案

它在表单生成器中不可用,通常也不需要。这也不是 Symfony 表单的工作方式。对于你想要做的事情,你可以尝试这样的事情。它将创建对应于角色列表的复选框列表。

$builder->add(
'roles',
'entity',
array(
'class' => 'Acme\DefaultBundle\Entity\Group',
'expanded' => true,
'multiple' => true,
'property' => 'role', // Or use __toString()
'query_builder' => function ($repository) {
return $repository->createQueryBuilder('g')
->orderBy('g.hierarchy', 'ASC');
}
)
);

参见 http://symfony.com/doc/master/reference/forms/types/entity.html .

如果您确实需要表单构建器中的存储库,则将表单类型创建为服务并使用 DIC 注入(inject)实体管理器。或者在创建表单时将其直接传递给表单类型。

关于symfony - 如何在symfony2中以表单类型调用实体存储库的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16663038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com