我正在使用带有推进器的symfony 1.4。我有3个表,如国家,州和县。我想使用onchange属性来避免重载并传递不相关的记录。如何在表单类中使用onchange属性。
答案 0 :(得分:1)
为什么在渲染字段时在表单类中使用它而不在视图中(并将其与ajax一起使用)?假设您没有执行echo $form
并且您正在回显每个字段(标签,错误,字段)。如果你执行echo $form
,你可能需要在表单类中编写它(imo这属于视图,而不是在类中,但这是另一个问题)。只需使用数组属性参数即可定义小部件。类似的东西:
$this->widgetSchema['state'] = new sfWidgetFormDoctrineChoice(array(blabla), array('onchange' => 'someJsFunction'));
如果您还想限制选项,那么,在表单类中(例如,仅在国家/地区选择框中选择了美国时填充美国州的选择),将上下文作为选项发送到表单:
在您的行动中:
$this->form = new whateverForm(array(), array('context' => $this->getContext()));
在您的表单中执行以下操作:
$context = $this->getOption('context');
if (!$context instanceOf sfContext) throw new sfException('whateverForm needs the context.. bla bla');
$taintedValues = $context->getRequest($this->getName());
$country = $taintedValues['country'];`
这将使您获得当前提交的国家/地区,以仅显示该国家/地区的州。
与县相同。