如何在symfony 1.4中使用onchange属性

时间:2012-01-29 01:58:10

标签: symfony1 symfony-1.4 propel

我正在使用带有推进器的symfony 1.4。我有3个表,如国家,州和县。我想使用onchange属性来避免重载并传递不相关的记录。如何在表单类中使用onchange属性。

1 个答案:

答案 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'];` 

这将使您获得当前提交的国家/地区,以仅显示该国家/地区的州。

与县相同。