Php Symfony2表格+;条令-选择
好的,伙计们 我有一个基于实体和整数字段的表构建Php Symfony2表格+;条令-选择,php,mysql,forms,symfony,doctrine-orm,Php,Mysql,Forms,Symfony,Doctrine Orm,好的,伙计们 我有一个基于实体和整数字段的表构建 id,用户id,项目id,统计数据,风险 现在我正在尝试只使用字段stats,risk构建表单。因此,我通过userId和projectId进行选择: $dql = "SELECT m FROM DevDashProjectBundle:Module m WHERE m.user =" .$options['user']->getId()."AND m.project =" .$options['project']->
id
,用户id
,项目id
,统计数据
,风险
现在我正在尝试只使用字段stats
,risk
构建表单。因此,我通过userId
和projectId
进行选择:
$dql = "SELECT m FROM DevDashProjectBundle:Module m WHERE m.user ="
.$options['user']->getId()."AND m.project ="
.$options['project']->getId();
$results = $this->entityManager->createQuery($dql)->getArrayResult();
现在我想构建一个表单,其中选择值为>0的字段stats(或true或sth),而不选择值为0
(或false)的字段stats。下一步编辑表单后,我想将更改发布到此字段-因此所选字段是1
,而不是0
@编辑
我的实体如下所示:
/**
* @ORM\Column(name="stats", type="boolean", nullable=false)
*
* @var boolean
*/
protected $stats=true;
$form = $this->createForm(new ModuleType($em), $module, array('user' => $user, 'project' => $project));
$builder
->add('module', 'entity', array(
'class' => 'DevDashProjectBundle:Module',
'mapped' => true,
'multiple' => true,
'expanded' => true,
'property' => 'stats',
'query_builder' => function(EntityRepository $er) use ($options){
return $er
->createQueryBuilder('m')
->where(
'm.user =' .$options['user']->getId().
'AND m.project=' .$options['project']->getId()
);
}
)
);
如您所见,默认值为true
在控制器中,我传递如下值:
/**
* @ORM\Column(name="stats", type="boolean", nullable=false)
*
* @var boolean
*/
protected $stats=true;
$form = $this->createForm(new ModuleType($em), $module, array('user' => $user, 'project' => $project));
$builder
->add('module', 'entity', array(
'class' => 'DevDashProjectBundle:Module',
'mapped' => true,
'multiple' => true,
'expanded' => true,
'property' => 'stats',
'query_builder' => function(EntityRepository $er) use ($options){
return $er
->createQueryBuilder('m')
->where(
'm.user =' .$options['user']->getId().
'AND m.project=' .$options['project']->getId()
);
}
)
);
$user和$project必须选择正确的行
模块类型中的下一个
$builder
->add('module', 'checkbox', array(
'label' => 'Stats',
));
表模块获取的字段统计信息为tinyint(Symfony将其解释为布尔值),设置为1,但复选框stats仍处于未选中状态
我也在尝试这样的事情:
/**
* @ORM\Column(name="stats", type="boolean", nullable=false)
*
* @var boolean
*/
protected $stats=true;
$form = $this->createForm(new ModuleType($em), $module, array('user' => $user, 'project' => $project));
$builder
->add('module', 'entity', array(
'class' => 'DevDashProjectBundle:Module',
'mapped' => true,
'multiple' => true,
'expanded' => true,
'property' => 'stats',
'query_builder' => function(EntityRepository $er) use ($options){
return $er
->createQueryBuilder('m')
->where(
'm.user =' .$options['user']->getId().
'AND m.project=' .$options['project']->getId()
);
}
)
);
因为我需要按用户id和项目id选择统计信息。查询返回正确的值,但值为true的复选框仍然未选中 您可以在模块实体上构建表单,如下所示:
$form = $this->createFormBuilder($module)
->add('stats', 'checkbox', array('label' => 'Stats'))
->getForm();
但是实体中的stats字段必须声明为boolean。
另见这一问题:
编辑:
这:
$builder->add(“模块”、“复选框”、“数组('label'=>'Stats'))
应该是
$builder->add('stats,'checkbox',数组('label'=>'stats'))
以匹配字段的名称