php - Symfony2 形式 + 学说 - 选择的选择

标签 php mysql forms symfony doctrine-orm

大家好,

我已经基于具有整数字段的实体构建了表,

iduser_idproject_id统计风险

现在我正在尝试构建仅包含字段statsrisk的表单。所以我通过 userIdprojectId 选择:

$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 (或 true 或 sth)的字段统计信息,并且未选择 0 (或 false)。接下来编辑表单后,我想发布对此字段的更改 - 因此所选字段为 1,而不是选择 0

@编辑

我的实体如下所示:

 /**
 * @ORM\Column(name="stats", type="boolean", nullable=false)
 * 
 * @var boolean
 */
protected $stats=true;

如您所见,默认值为 true。

在 Controller 中我传递这样的值:

  $form = $this->createForm(new ModuleType($em), $module, array('user' => $user, 'project' => $project));

需要 $user 和 $project 来选择正确的行。

模块类型中的下一个

        $builder
        ->add('module', 'checkbox', array(
            'label' => 'Stats',
        ));

表模块的字段统计数据为tinyint(由Symfony解释为 bool 值)设置为1,但复选框统计数据仍未选中。

我也尝试过这样的事情:

        $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_id 和 project_id 选择统计信息。查询返回正确的值,但值为 true 的复选框仍未选中。

最佳答案

您可以在模块实体上构建表单,如下所示:

$form = $this->createFormBuilder($module)
        ->add('stats', 'checkbox', array('label' => 'Stats'))
        ->getForm();

但是实体中的统计字段必须声明为 bool 值。 另请参阅这个问题:PHP/Symfony2 Form Checkbox field

编辑: 这: $builder->add('模块', '复选框', array('标签' => '统计'));

应该是 $builder->add('统计', '复选框', array('标签' => '统计'));

匹配您的字段名称。

关于php - Symfony2 形式 + 学说 - 选择的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19044763/

相关文章:

PHP:504 网关超时错误?

mysql - 为每个用户选择最新的两行以获得列的差异(MySQL)

javascript - 我可以在同一页面的 javascript 中使用两次吗?

forms - ASP.NET MVC-发布数据后如何重新加载相同的 View ?

php - 图像是垂直显示的,而不是水平显示的?

php - 以编程方式从订阅/订单中删除优惠券

php - MySQL:从类别中获取帖子

php - jquery 到 php 代码,然后到数据库

javascript - 单击按钮时加载动画(Pardot 形式)

php - Codeigniter 3.1.0 Active Record 更新查询既不出错也不更新数据库