【问题标题】:Codeigniter - form validation and form dropdown issueCodeigniter - 表单验证和表单下拉问题
【发布时间】:2012-04-13 08:08:00
【问题描述】:

假设我的编辑用户表单上有一个选择标签。它包含一个用户可以分配到的学校列表。

<select 'school'>
    <option value='1'>School 1</option>
    <option value='2'>School 2</option>
</school>

创建者:echo form_dropdown('school', $school_list)

如果我正在编辑的用户已经分配了学校,我希望下拉菜单默认为该学校。

所以,我这样做了:

$school = $this->db->get_where('schools', $filters) # result object from database
echo form_dropdown('school', $school_list, $school->id);

当然,问题是,当用户尚未分配学校并且$school-&gt;id 为空时,这会引发错误。

所以我的问题是;在 codeigniter 中解决此类问题的最佳方法是什么?

我能想到的解决这个问题的一种方法是在 $school-&gt;id 上返回 NULL。所以,

empty($school->id) && ($school->id = NULL);
echo form_dropdown('school', $school_list, $school->id);

但是,它看起来很不优雅,尽管我还没有测试过。如果我想重新填充表单,我认为它不会很好地工作,以防万一它提交时出错。

echo form_dropdown('school', $school_list, set_value('school', $school->id));

谁有更好的解决方案?

编辑:请注意,这不是我使用的实际代码。我刚刚输入了这个,所以如果有语法错误或诸如此类的错误,我很抱歉。

【问题讨论】:

    标签: php codeigniter validation


    【解决方案1】:

    只需使用echo form_dropdown('school', $school_list, set_value('school', @$school-&gt;id));

    然后您通过@ 知道该值有时可能为空,如果该值缺失,它会抑制错误。

    如果您没有 id,这样做会向第三个参数发送一个 NULL 值,默认情况下它会选择第一个 &lt;option&gt;。

    【讨论】:

    • 我已经考虑过了,但是这对set_value() 函数有什么影响呢?这不会搞砸吗?
    • 并非如此。如果您有 $_POST['school'] 值,则会被选中。如果没有,它将选择默认 id 或 NULL(第一个)。
    • 亲爱的上帝,我刚刚测试了它。为什么我在花了 10 分钟提出这个问题之前没有这样做,这让我感到困惑。只是表明,无论你花多长时间做一件事,你仍然可以使用一些外部视角。谢谢,@Robin。
    • 是的,我听到了 :) 在尝试解决问题时,有时我们自己的头脑中会排除最简单的解决方案
    • 确实如此。我很高兴我们现在有这个。 :)
    猜你喜欢
    • 2011-11-05
    • 1970-01-01
    • 2015-12-06
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2017-03-09
    相关资源
    最近更新 更多