Forms 如何为每个选中的复选框创建多个记录集
我有下面的模式,我想用Symfony 1.4和doctor创建一个表单,用户可以从选择框中选择一本杂志,然后单击几个复选框,其中每个复选框都是一期 在伪标记中,它应该如下所示: [select]杂志[/select] [复选框]第1期[复选框] [复选框]第2期[复选框] [复选框]第3期[复选框] [复选框]第4期[复选框] [复选框]第5期[复选框] 如果表单已保存,则应为选中的每个复选框创建一个记录集。广告ID通过url传递给表单 我尝试了几种方法来实现这一点,但我坚持了几个星期,希望这里的人能帮助我 在实际的项目中,我需要一个25个描述的表单的集合,但是如果我只让这个基本表单工作,这将不会是一个问题 我应该创建一个广告表单并将计划表单嵌入其中吗?我总是直接用刨床试着 如有任何建议、提示或帮助,我们将不胜感激。 对不起,我的英语很差Forms 如何为每个选中的复选框创建多个记录集,forms,symfony1,doctrine,symfony-1.4,Forms,Symfony1,Doctrine,Symfony 1.4,我有下面的模式,我想用Symfony 1.4和doctor创建一个表单,用户可以从选择框中选择一本杂志,然后单击几个复选框,其中每个复选框都是一期 在伪标记中,它应该如下所示: [select]杂志[/select] [复选框]第1期[复选框] [复选框]第2期[复选框] [复选框]第3期[复选框] [复选框]第4期[复选框] [复选框]第5期[复选框] 如果表单已保存,则应为选中的每个复选框创建一个记录集。广告ID通过url传递给表单 我尝试了几种方法来实现这一点,但我坚持了几个星期,希望这里
Advertisement:
columns:
title: { type: string(100), notnull: true }
Issue:
columns:
magazine_id: { type: integer, notnull: true }
number: { type: string(10), notnull: true }
relations:
Magazine:
local: magazine_id
foreign: id
foreignAlias: Issues
type: one
foreignType: many
Magazine:
columns:
title: { type: string(100) }
Planing:
columns:
advertisement_id: { type: integer, notnull: true }
magazine_id: { type: integer, notnull: true }
issue_id: { type: integer, notnull: true }
relations:
Issue:
local: issue_id
foreign: id
foreignAlias: Planings
type: one
foreignType: many
Advertisement:
local: advertisement_id
foreign: id
foreignAlias: Planings
type: one
foreignType: many
Magazine:
local: magazine_id
foreign: id
foreignAlias: Planings
type: one
foreignType: many
如果我理解正确(让我检查一下:你想在某些杂志的某些期刊上刊登广告吗?)
使用从规划对象到问题对象的一对多关系,然后使用内置的sfWidgetFormChoice,如Symfony博客所述:(向下滚动至“分组您的选择”)
因此,不要使用sfWidgetFormDoctrineChoice,而是使用其父级并编写自己的方法来构建问题数组,按杂志分组,存储在嵌套数组中。您可以在PlaningForm配置中覆盖小部件,如下所示:
$this->widgetSchema['issues_list'] = new sfWidgetFormChoice(array(
'multiple' => true,
'expanded' => true,
'choices' => Doctrine_Core::getTable('Issue')->getIssuesForSelect(),
));
然后将该方法添加到IssueTable.class.php
中,该方法返回一个带有标题的问题ID嵌套数组,按杂志标题分组,看起来应该类似于:
array(
'Magazine 1' => array(
17 => 'Issue 1',
18 => 'Issue 2',
28 => 'Issue 3',
),
'Magazine 2' => array(
11 => 'Issue 26',
19 => 'Issue 27',
29 => 'Issue 28',
),
);
如果我理解正确(让我检查一下:你想在某些杂志的某些期刊上刊登广告吗?)
使用从规划对象到问题对象的一对多关系,然后使用内置的sfWidgetFormChoice,如Symfony博客所述:(向下滚动至“分组您的选择”)
因此,不要使用sfWidgetFormDoctrineChoice,而是使用其父级并编写自己的方法来构建问题数组,按杂志分组,存储在嵌套数组中。您可以在PlaningForm配置中覆盖小部件,如下所示:
$this->widgetSchema['issues_list'] = new sfWidgetFormChoice(array(
'multiple' => true,
'expanded' => true,
'choices' => Doctrine_Core::getTable('Issue')->getIssuesForSelect(),
));
然后将该方法添加到IssueTable.class.php
中,该方法返回一个带有标题的问题ID嵌套数组,按杂志标题分组,看起来应该类似于:
array(
'Magazine 1' => array(
17 => 'Issue 1',
18 => 'Issue 2',
28 => 'Issue 3',
),
'Magazine 2' => array(
11 => 'Issue 26',
19 => 'Issue 27',
29 => 'Issue 28',
),
);
我应该补充的是,这看起来与您要求的不太一样(选择会更改复选框),但您可以在页面加载后使用javascript添加该行为。我应该补充的是,这与您要求的不太一样(选择会更改复选框),但您可以在页面加载后使用javascript添加该行为。