【问题标题】:Whats the best way to insert selected checkboxes data in database in symfony2 doctrine什么是在 symfony2 学说中的数据库中插入选定复选框数据的最佳方法
【发布时间】:2012-08-10 02:05:58
【问题描述】:

我有一个名为“Tasks”的表,“User”与任务之间存在多对多关系。

在我显示的页面上:

<input type="checkbox" name="tasks[]" value="task.id"> TaskName

<input type="checkbox"> name="tasks[]" TaskName2

<input type="checkbox"> name="tasks[]" TaskName3

我想知道:在服务器端,如何获取用户选中的复选框数组?

如果我得到了集合,那么我可以添加它,使用

User->addTasks(tasks)

【问题讨论】:

    标签: php forms symfony checkbox doctrine


    【解决方案1】:

    您似乎没有使用 Symfony 的内置表单功能。我强烈建议您研究一下...

    使用 Symfony 表单,您可以通过将“扩展”和“多个”选项都设置为 true 来将实体显示为复选框:

    // StackOverflow\BulbasaurBundle\Form\TrainerType.php
    
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
    
    class TrainerType extends AbstractType
    {
        ...
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder
                ->add('name')
                ->add(
                    'pokemon',
                    'entity',
                    array
                    (
                        "class" => "BulbasaurBundle:Pokemon",
                        "expanded" => true,
                        "multiple" => true,
                        "property" => "description"
                    )
                );
        }
    
        ...
    }
    

    当这个表单被渲染时,它会将每个 Pokemon 实体显示为复选框,使用 __toString() 方法作为复选框的标签。

    使用 Symfony 表单的另一个好处是 Symfony 将管理自动检查哪些框。表单充当实体和请求/视图之间的中介。也就是说,当您请求更改对象时,控制器会根据该对象的当前状态创建一个表单,并将其呈现给用户。相反,当用户提交该数据时,控制器可以将请求信息绑定到实体,然后可以将其持久化。

    这里有更多关于 Symfony2 表单的信息: http://symfony.com/doc/current/book/forms.html

    【讨论】:

    • 我试过了,但我唯一的问题是如何将存储在 pokeman 实体中的description 显示为每个复选框旁边的标签
    • 更改__toString()方法:public function __toString() { return $this->getDescription(); }
    • 实际上,只需在该选项数组中添加一个新元素:“property” = “description”。这将覆盖 __toString() 方法并改用 getDescription() 方法。
    • 我试过了,我得到了他的The option "property" does not exist. Known options are: "attr",
    • 您可以发布您的$builder 代码吗?另外,出于好奇,您使用的是什么版本的 Symfony?看来它应该适用于任何 2.0+,但我想知道这部分是否更新...
    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    • 2014-12-15
    • 1970-01-01
    相关资源
    最近更新 更多