如何在 symfony 1.4 中使用 onchange 属性

发布于 2024-12-31 22:37:16 字数 108 浏览 3 评论 0原文

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

I'am using symfony 1.4 with propel orm. I have 3 tables such as countries, states and counties. I want to use the onchange attribute to avoid overload and pass over unrelated records. How can I use onchange attribute in form classes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可爱咩 2025-01-07 22:37:16

为什么在渲染字段时在表单类中而不是在视图中使用它(并与 ajax 一起使用)?假设您没有执行 echo $form 并且您正在回显每个字段(标签、错误、字段)。如果您执行 echo $form ,您可能需要将其写入表单类中(我认为这属于视图中,而不是类中,但这是另一个问题)。只需在定义小部件时使用数组属性参数即可。类似于:

$this->widgetSchema['state'] = new sfWidgetFormDoctrineChoice(array(blabla), array('onchange' => 'someJsFunction'));

如果您还想限制选择,则在表单类中(例如,当在国家/地区选择框中选择美国时,仅使用美国各州填充选择),将上下文作为选项发送到表单:

在你的操作中:

$this->form = newwhateverForm(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'];` 

这将为您提供当前提交的国家只显示该国家的州。

各县也是如此。

Why use it in the form class and not in you view (and use it with ajax) when rendering the field? That assuming you are not doing an echo $form and you are echoing each field (label, error, field). If you do an echo $form, you might need to write it in the form class (imo this belongs in the view, not in the class, but that's another problem). Just use the array attributes parameter with you are defining the widget. Something like:

$this->widgetSchema['state'] = new sfWidgetFormDoctrineChoice(array(blabla), array('onchange' => 'someJsFunction'));

If you want to also restrict the choices, then, in the form classes (for example to only populate a select with the US states when US has been selected in the country selectbox), send the context to the form as an option:

in your actions:

$this->form = new whateverForm(array(), array('context' => $this->getContext()));

in your form do something like:

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

That will get you the current submited country to display the states only for that country.

Same thing with the counties.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文