Raj*_*ani 2 entity formbuilder symfony symfony-2.2
我想在表单类型类中调用函数.function generate array,写在实体存储库类中.使用该数组我将生成动态表单字段.这是实体存储库类函数.
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;
}
Run Code Online (Sandbox Code Playgroud)
下面是我的表单构建器类,我想在上面调用实体存储库函数.
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,));
}
}
Run Code Online (Sandbox Code Playgroud)
我能够获得静态变量,如上面的代码所示,但我有一个困惑,我应该如何在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');
}
)
);
Run Code Online (Sandbox Code Playgroud)
请参阅http://symfony.com/doc/master/reference/forms/types/entity.html.
如果您确实需要表单构建器中的存储库,则将表单类型创建为服务,并向实体管理器注入DIC.或者在创建表单时直接将其传递给表单类型.
| 归档时间: |
|
| 查看次数: |
9621 次 |
| 最近记录: |