【问题标题】:Re-displaying CodeIgniter data that isn't validated重新显示未经验证的 CodeIgniter 数据
【发布时间】:2013-06-10 12:33:14
【问题描述】:

据我了解,如果验证失败,只有经过验证的值才能重新加载到表单上。目前我有以下表格

    <?php echo form_label('Vendors', 'vendors'); ?>
    <?php echo form_dropdown('vendors', $vendors, $this->input->post('vendors')); ?>

    <br>

    <?php echo form_label('Title', 'title'); ?>
    <?php echo form_input('title', set_value('title')); ?>

    <br><br>

    <?php echo form_label('Custom Query', 'query'); ?>
    <?php echo form_textarea('query', set_value('query')); ?>

    <br>

    <?php echo form_hidden('id', set_value('id')); ?>

    <?php echo form_submit('submit', 'Submit Query') ?>

以及以下验证规则:

'my_rule' => [
    [
        'field' => 'vendors',
        'label' => 'Vendors',
        'rules' => 'required|greater_than[0]'
    ],
    [
        'field' => 'title',
        'label' => 'Title',
        'rules' => 'trim|required|xss_clean'
    ],
    [
        'field' => 'query',
        'label' => 'Custom Query',
        'rules' => 'trim|required|xss_clean'
    ]
]

但是,如果验证失败,我的隐藏字段 (id) 将不会重新加载值,因为它不是必需的。有没有办法解决这个问题/我错过了什么?

【问题讨论】:

  • 为什么不将 id 添加到 my_rule 中?
  • 因为它不是必需的属性。如果设置了id,页面将更新现有记录,否则创建新记录。

标签: php codeigniter validation


【解决方案1】:

您的规则中必须包含“id”字段,即使不是必需的。您可以“不需要”它,例如将其修剪:

'my_rule' => [
    [
        'field' => 'vendors',
        'label' => 'Vendors',
        'rules' => 'required|greater_than[0]'
    ],
    [
        'field' => 'title',
        'label' => 'Title',
        'rules' => 'trim|required|xss_clean'
    ],
    [
        'field' => 'query',
        'label' => 'Custom Query',
        'rules' => 'trim|required|xss_clean'
    ],
    [
        'field' => 'id',
        'label' => 'ID',
        'rules' => 'trim'
    ]
]

像这样,该字段将在提交后重新填充,不变(除了修剪,但我认为在你的情况下没关系)

【讨论】:

  • 谢谢。我的一部分讨厌添加非语义规则来改变行为,但它确实有效。我最终使用了 xss_clean。
猜你喜欢
  • 2016-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-13
  • 2018-10-16
  • 2014-02-20
相关资源
最近更新 更多