【问题标题】:How to set default values for CodeIgniter Form Validation?如何为 CodeIgniter 表单验证设置默认值?
【发布时间】:2015-07-12 09:21:01
【问题描述】:

我知道使用set_value() 在 CodeIgniter 表单中设置默认值,但是如果值未提交或在表单提交之前,我如何设置验证的默认值?

public function index($uri = NULL) 
{
    $this->load->helper('form');
    $this->load->library('form_validation'); 

    //pull from DB or Session
    $data = array( 
            'Status' => 'users_default_status',
            'Order' => 'users_default_order',
            'Asc' => 'users_default_asc'
    );

    $this->form_validation->set_data($data);

    $this->form_validation->set_rules('Status', 'Status', 'numeric|trim|required|strtolower');
    $this->form_validation->set_rules('Order', 'Order', 'trim|required');
    $this->form_validation->set_rules('Asc', 'Asc', 'trim|required|strtolower');

    if ($this->form_validation->run() === FALSE) // validation failed
    {
        // validation failed but maintain submitted values in form/feedback

    }else{
        // validation successful, do whatever
    }
}

因此,如果有表单提交,它使用 POST 值,如果没有,它使用默认值(但仍然经过验证)。我希望默认值可以逐个变量地工作,所以有些可以是默认值,有些可以是用户提交的。

【问题讨论】:

  • 我认为 Codeigniter 不提供它。您应该通过代码检查值或扩展验证类
  • $this->form_validation->set_data($data); // 抛出错误?

标签: php forms codeigniter validation


【解决方案1】:

我知道使用set_value() 在 CodeIgniter 表单中设置默认值,但是如果值未提交或在表单提交之前,我该如何设置验证的默认值?

只需检查该值是否存在并将其用作默认值,否则为空白(或不同的默认值)。

在控制器中,决定是否要加载空白表单,如果不是,则发送字段的数据......

$data['fieldname'] = "whatever"; // from the database

$this->load->view('yourpage', $data);

然后在您的视图中,检查每个字段是否存在此数据。如果数据已发送,请使用它。否则,设置一个空白值。

<?php $value = isset($fieldname) ? $fieldname : ''; ?>

<input name="fieldname" value="<?php  echo set_value('fieldname', $value); ?>" type="text" />
  • 如果您不从控制器发送数据,该字段将为空白(您也可以设置默认值)

  • 如果您从控制器发送数据,该字段将使用控制器(数据库)中的数据填写。

  • 如果您提交表单但验证失败,set_value() 函数将使用最新发布数组中的数据重新加载该字段。

【讨论】:

    【解决方案2】:

    这些只是一些想法......

    验证规则作用于发布的数据。因此,如果您使用set_value('order',$default_order),提交表单时,它将采用新用户输入的值或您提供的值。

    如果用户清空预填充或默认输入,则不能在规则中将其设置为“必需”。您要做的是使用回调函数来处理这种情况以检查它是否为空并提供默认值并返回 TRUE。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 2015-11-18
      • 2020-01-18
      • 2011-02-17
      • 1970-01-01
      相关资源
      最近更新 更多