Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在symfony2原则中,在数据库中插入选定复选框数据的最佳方式是什么_Php_Forms_Symfony_Checkbox_Doctrine - Fatal编程技术网

Php 在symfony2原则中,在数据库中插入选定复选框数据的最佳方式是什么

Php 在symfony2原则中,在数据库中插入选定复选框数据的最佳方式是什么,php,forms,symfony,checkbox,doctrine,Php,Forms,Symfony,Checkbox,Doctrine,我有一个名为“任务”的表,“用户”与任务有多对多关系 在我展示的页面上: TaskName name=“tasks[]”任务名称2 name=“tasks[]”任务名称3 我想知道:在服务器端,如何获取用户选择的复选框数组 如果我得到了集合,那么我可以使用 User->addTasks(tasks)看起来您没有使用Symfony的内置表单功能。我强烈建议你调查一下 使用Symfony表单,您可以通过将“扩展”和“多个”选项分别设置为true,将实体显示为复选框: // StackOverflow

我有一个名为“任务”的表,“用户”与任务有多对多关系

在我展示的页面上:

TaskName

name=“tasks[]”任务名称2

name=“tasks[]”任务名称3

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

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


User->addTasks(tasks)

看起来您没有使用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"
                )
            );
    }

    ...
}
呈现此表单时,它将使用
\uuu toString()
方法作为复选框标签,将每个口袋妖怪实体显示为复选框

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

有关Symfony2表格的更多信息,请参见:

我试过了,但我唯一的问题是如何将存储在pokeman实体中的
描述作为标签显示在每个复选框旁边更改
\uuuuuToString()
方法:
公共函数uuuuToString(){return$this->getDescription()}
实际上,只需在选项数组中添加一个新元素:“property”=“description”. 这会覆盖
\uu toString()
方法,并使用
getDescription()
方法。我尝试了这个方法,得到了他的
选项“property”不存在。已知的选项有:“attr”,
您能为
$builder
发布您的代码吗?另外,出于好奇,您使用的是什么版本的Symfony?它似乎可以在任何2.0+上运行,但我想知道这部分是否较新。。。