在codeigniter中加载两次视图


loading a view twice in codeigniter

你好,我刚开始CodeIgniter。我在加载视图中遇到问题。

我的场景是我正在创建一个示例添加表单。提交后,它会进入控制器并在数据库中插入条目。我想如果数据库操作成功,它会再次出现在具有某些值的同一视图中。基于这些值,我将显示一些特定的行,通知用户插入操作。我在控制器中的功能看起来像

public function add_user()
{
    $this->load->view('add_user');
    $post=$this->input->post();
    if(isset($post['name']))
    {
        $data=array(
        'name'=>$post['name'],
        'designation'=>$post['designation']
        );
        if($this->db->insert('user',$data))
        $result['update']=true;
        else
        $result['update']=false;
        $this->load->view('add_user',$result);
    }
}

我的观点看起来像

    <h1 align="center">Add User</h1>
    <table border="0" cellpadding="2" cellspacing="2" align="center">
        <?php
        if(isset($update))
        {
            if($update)
            {
                ?>
                <tr bgcolor="#00FF00">
                    <td>Record Added Successfully</td>
                </tr>
            <?php
            }
            else
            {
                ?>
                <tr bgcolor="#FF0000">
                    <td>Insertion Operation Failed</td>
                </tr>
            <?php
            }   
        }
        ?>
        <?php echo(form_open('first/add_user'));?>
            <tr>
                <td>Name</td>
                <td><input type="text" name="name" /></td>
            </tr>
            <tr>
                <td>Designation</td>
                <td>
                    <select name="designation">
                        <option value="Junior PHP Developer">Junior PHP Developer</option>
                        <option value="Senior PHP Developer">Senior PHP Developer</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td colspan="2" align="center">
                    <input type="submit" name="submit" value="Add User" />
                </td>
            </tr>   
        </form>
    </table>

现在我想要的是,如果插入操作成功,我将发送真值到视图,如果不成功,我发送假值。基于这个值,我将显示一些行。根据我理解的逻辑,我加载了两次视图。因为第一次它加载窗体,第二次它加载具有一些true或false值的视图。但是,当它重新加载后,会出现两种形式。我知道这个问题是由于我的观点受到双重影响。我想问一下,在数据库操作之后,是否有另一种发送值的方式来查看?

只需加载一次视图:

public function add_user()
{
  $post=$this->input->post();
  $result = array();
  if(isset($post['name']))
  {
      $data=array(
       'name'=>$post['name'],
       'designation'=>$post['designation']
      );
      if($this->db->insert('user',$data))
      $result['update']=true;
      else
      $result['update']=false;
  }
  $this->load->view('add_user',$result);
}

顺便说一句,您的代码有点乱,请使用

// try something like this
//you may need to use form validation helper 
//load add user form
public function add_user(){
//any data required for the form
$data['anything'] = '';
$this->load->view('add_user',$data);
}
//to process adding user action, form action will point to this
function adding_user(){
 if($this->input->post('name')){
   $data=array(
   'name'=>$post['name'],
   'designation'=>$post['designation'];
    if($this->db->insert('user',$data)){
     echo 'user added successfully!';
    }else{
     redirect(user/add_user);
    }
  );
 }
}