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+上运行,但我想知道这部分是否较新。。。