【问题标题】:Codeigniter set_selectCodeigniter set_select
【发布时间】:2010-12-23 15:17:56
【问题描述】:

抱歉,由于我不在办公桌前,目前无法发布任何代码,但我会尽可能清楚地解释我的问题,希望有人能提供帮助!

我有一个提交给控制器中的方法的长表单。为了使事情更加用户友好,我将表单分成几个部分。每个部分都有一个隐藏字段,用作标志。表单提交的方法由测试这些标志的条件组成。如果找到标志,则可以显示表单的下一部分。我还可以分段收集数据,而不是一次性处理全部数据。

当我尝试使用 set_select 方法为选择菜单设置默认值时,我的问题出现了。该方法是 CI 系统 form_validation 库的一部分。如果将可选的第三个参数作为 true 传递给方法,则应将该值设置为默认值。但是,这仅在 form_validation 之前没有运行过的情况下才有效。这是非常有意义的,因为假设只有在第一次看到表单时才需要默认值,即。在任何提交之前,因此在任何发布数据之前。

当然,这不是我的情况。如果我只是清空 post 数组,那么这会破坏 set_select 函数的要点,因为表单上方的任何选择菜单将不再能够设置为其最后一个值。

谁能想到一个好的解决方案?我知道使用 AJAX 会更容易,但我想确保每个人都能获得最佳体验,无论他们是否决定使用 JavaScript。

【问题讨论】:

  • 有机会发布一些代码可能有助于使事情更清晰并引起一些反应。

标签: php codeigniter select validation


【解决方案1】:

就个人而言,我会使用 AJAX 将表单分成 3 个部分,每次都通过 AJAX 提交。

那么对于非 javascript 用户(少数),我将只显示整个表单,并正常处理。

拆分表单听起来像是“功能”而不是功能。这意味着javascript用户将能够利用分解表单的“功能”,而非javascript用户仍然可以轻松完成提交信息的“功能”。

【讨论】:

  • 通常我会同意你的看法。但是我的表单包含确定下一部分显示内容的元素,例如选择您的聚会中有多少人,然后显示正确数量的文本框以输入他们的姓名。这就是为什么我不能只显示整个表单。
  • @musoNic80 我认为你让这变得比它需要的更复杂。如果是这样的话,它实际上是 3 种不同的形式。 DB情况如何?这些是用户(auth)吗?他们只填写一次表格吗?表单内容是否存储在数据库中?等等……
【解决方案2】:

这样做怎么样:

  • 用 3 种不同的方法将其拆分为 3 种不同的形式
  • 在每种方法上,使用会话设置开关以检查当前是什么形式
  • 在每个表单上添加表单验证并进行相应检查
  • 如果这 3 个表单是 OK,那么您可以继续进行任何您想要的过程
  • 如果某个表单失败了,您将加载回之前失败的表单

【讨论】:

    【解决方案3】:

    我已经决定使用 set_select 对我来说可能不是最好的选择,所以我在我的视图文件中添加了一些代码,这些代码将为每个单独的情况执行此操作,而不是尝试使用通用函数。 不理想,但正在工作!

    【讨论】:

      猜你喜欢
      • 2011-12-24
      • 2018-10-05
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多