【问题标题】:To populate select options at backend using Symfony?使用 Symfony 在后端填充选择选项?
【发布时间】:2009-11-21 13:19:49
【问题描述】:

symfony 的形式是, 'nation' =>new sfWidgetFormChoice(array('choices' => NationPeer::getAllNation())), 'township' =>new sfWidgetFormChoice(array('choices' => TownshipPeer::getAllTownship())), 在选择国家(如印度)时,它应该填充乡镇(印度境内的乡镇)。我不想使用 Javascripts!

【问题讨论】:

    标签: php forms symfony1


    【解决方案1】:

    很遗憾,除非使用 JavaScript,否则网页无法对客户端操作做出反应。

    【讨论】:

    • 在 ASP.NET 中,我们可以通过打开服务器控件 autopostback="true" 的属性来做到这一点(默认情况下,文本框为 false)。同样的方式我们可以为下拉(选择/组合框)做这件事,没有 javascripts。 when ever there is a change in selection it will fire the event that is set. (可能在 PARADO 中可能,我不知道..从未使用过它)
    • Autopostback 也是 JavaScript。没有 JavaScript 的唯一方法是将其拆分为 2 个表单,提交第一个以获得第二个的答案。
    • 但是 ASP.NET 提供了一个内置的自动回发事件,如果我们制作两个表单,这将是一个返工,并且会有多个这样的选择。如果根本没有办法(如果 Javascripts 被联合国禁止),那么任何方式都是一个好主意。谢谢乔恩·温斯坦利!
    • 您是否尝试过关闭 JavaScript 的自动回发?我想你会发现 ASP.NET 将 JavaScript 注入到你的页面中。
    【解决方案2】:

    如果我理解正确,您想根据第一个 sfWidgetFormChoice 的选择更改第二个 sfWidgetFormChoice。在加载页面时,您已经可以为第二个表单预呈现当前选定的值,但是当您更改第一个表单的值时,您也想更改第二个表单的值,对吧?

    很抱歉,但无论如何,您必须依赖 Javascript 来实现这一点。使用 Symfony,您可以使用 AJAX 助手来解决这个问题,而不必为自己编写许多 Javascript 而烦恼。您可以使用“observe_field”函数将第二个表单更改为您的新值。诀窍是每次都用不同的值重新渲染第二个 Widget。

    有关更多信息,请参阅此页面:http://www.symfony-project.org/book/1_2/11-Ajax-Integration#chapter_11_sub_ajax_driven_forms

    【讨论】:

      猜你喜欢
      • 2018-06-28
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      • 2019-11-24
      • 2011-12-26
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多