【问题标题】:Codeignitor Form Validation Error: Unable to access the page to fill a form after using form validationCodeigniter 表单验证错误:使用表单验证后无法访问页面以填写表单
【发布时间】:2019-04-18 03:58:42
【问题描述】:

我在 codeignitor 中创建了一个添加用户表单,其中包含链接 http://example.com/users/add。在控制器中,我有以下用于表单验证的代码:

$this->form_validation->set_rules('firstName', 'First Name', 'required');
$this->form_validation->set_rules('lastName', 'Last Name', '');
$this->form_validation->set_rules('guardian1', 'Guardian First', 'required');
$this->form_validation->set_rules('guardian2', 'Guardian Second', '');
$this->form_validation->set_rules('mobile', 'Mobile Number', 'required');
$this->form_validation->set_rules('phone', 'Phone Number', '');
$this->form_validation->set_rules('dob', 'Date Of Birth', 'required');
$this->form_validation->set_rules('status', 'Account Status', 'required');
$this->form_validation->set_rules('confirmation', 'Confirm Creation', 'required');

if ($this->form_validation->run == FALSE)
{
  redirect('news');
}
else
{
  redirect('users/view');
}

当我尝试访问 url 以添加用户时,它直接将我重定向到 http://example.com/news,而无需打开我可以填写表单的表单页面。 这是我添加用户表单的表单代码:

<form id="form-project" role="form" method="post" action="<?php echo base_url(); ?>users/add" autocomplete="off" novalidate>
    <div class="form-group-attached">
    <div class="row clearfix">
        <div class="col-md-6">
          <div class="form-group form-group-default required">
            <label>First name</label>
            <input type="text" class="form-control" name="firstName" required>
          </div>
        </div>
        <div class="col-md-6">
          <div class="form-group form-group-default">
            <label>Last name</label>
            <input type="text" class="form-control" name="lastName">
          </div>
        </div>
      </div>
      <div class="row clearfix">
        <div class="col-md-6">
          <div class="form-group form-group-default required">
            <label>Parent I / Guardian</label>
            <input type="text" class="form-control" name="guardian1" required>
          </div>
        </div>
        <div class="col-md-6">
          <div class="form-group form-group-default">
            <label>Parent II / Guardian</label>
            <input type="text" class="form-control" name="guardian2">
          </div>
        </div>
      </div>
      <div class="row clearfix">
        <div class="col-md-6">
          <div class="form-group form-group-default required">
            <label>Mobile</label>
            <input type="text" class="form-control" name="mobile" required>
          </div>
        </div>
        <div class="col-md-6">
          <div class="form-group form-group-default">
            <label>Phone</label>
            <input type="text" class="form-control" name="phone">
          </div>
        </div>
      </div>
      <div class="row clearfix">
        <div class="col-md-6">
          <div class="form-group form-group-default input-group required">
            <div class="form-input-group">
              <label>Date Of Birth</label>
              <input id="start-date" type="text" class="form-control date" name="dob" required>
            </div>
          </div>
        </div>
        <div class="col-md-6">
          <div class="form-group form-group-default input-group">
            <div class="form-input-group">
              <label class="inline">Account Status</label>
            </div>
            <div class="input-group-addon bg-transparent h-c-50">
              <input type="checkbox" name="status" data-init-plugin="switchery" data-size="small" data-color="primary" checked="checked" required />
            </div>
          </div>
        </div>
      </div>
    </div>
    <br>
    <div class="pull-left">
      <div class="checkbox check-primary">
        <input type="checkbox" checked="unchecked" value="1" id="checkbox-agree" name="confirmation">
        <label for="checkbox-agree">I hereby certify that the information above is true and accurate
        </label>
      </div>
    </div>
    <br>
    <button class="btn btn-primary" type="submit">Submit</button>
    <button class="btn btn-default" type="reset"><i class="pg-close"></i>Clear</button>
  </form>

P.s 我已经加载了表单验证库和 url 助手。

【问题讨论】:

    标签: php frameworks


    【解决方案1】:

    如果条件需要改变你:

    if ($this->form_validation->run == FALSE)
    

    if ($this->form_validation->run != FALSE)
    

    然后,如果验证失败,用户将被重定向回“users/view”,如果通过则重定向到“news”。

    【讨论】:

    • 我希望它首先加载“用户/添加”,在重定向之前我可以在表单中输入该数据。每当我尝试访问“用户/添加”而不让我在表单中插入数据时,它会自动重定向到“新闻”。
    • 如果是这样,您需要两个函数,而不仅仅是一个。第一个函数将只显示表单,第二个函数将处理来自 html 表单的数据(您需要将验证器放在第二个函数中)。
    • 谢谢!!它有效,但有什么方法可以为此使用单个函数? (我已经看到一些应用程序使用单个函数来处理这个)
    • 检查请求方法怎么样? check this link。如果验证为 FALSE 或请求的方法为 GET,则显示表单。如果验证为 FALSE 且方法为 POST,则重定向到 news
    • 我切换到使用 post request 方法,现在我可以在单个函数中使用 form_validation 和 route。谢谢!!!
    【解决方案2】:

    如果你想重定向回你的表单,你的重定向语句应该在 if 块体中

    if($this->form_validation->run == FALSE)
    {
      redirect('users/view');
    }
    else
    {
      redirect('news');
    }
    

    【讨论】:

      猜你喜欢
      • 2013-01-17
      • 2012-07-01
      • 1970-01-01
      • 2023-03-22
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多