将值从控制器传递到codeigniter中的视图

时间:2014-09-16 14:35:19

标签: php arrays codeigniter checkbox

我的视图中有一个复选框列表,我从数据库中加载了值。

    <input type="checkbox"  id="CheckBoxAdmin" name="CheckBoxAdmin" <?php echo $Admin; ?>    />Admin
    <input type="checkbox"  id="CheckBoxCreateUser" name="CheckBoxCreateUser" <?php echo   $CreateUser; ?>  />Create User

我通过我的控制器传递价值。

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

$ data包含一组用户权限。

     for($i=0;$i<$max;$i++)
     {
     if( $pieces[$i]=="Admin"  ) 
      {
         $data['Admin']="checked";
      }
      else
      {
        $data['Admin']="";
      }
      if( $pieces[$i]== "Create User") 
      {
          $data["CreateUser"]="checked";
      }
      else
      {
        $data["CreateUser"]="";
      }

     }

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

但问题是,当我回显$ Admin或$ CreateUser时,我看不到复选框的正确状态(是否已选中)。我想传递控制器中的值,以便查看。

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

我发现了自己的错误。 $ pieces无法全局访问,因为它是在循环内声明的。在我的视图文件中,我编写了如下逻辑,

    <?php
    $Admin="";
    $CreateUser="";

    $prv= element('privileges',  $users);
    $pieces = explode(",", $prv);
    $data['priviledges']= str_replace(array('[',']'),'',$pieces);
    $pieces= str_replace(array('[',']'),'',$pieces);
    $max = sizeof($pieces);

     if (in_array('Admin', $pieces, true))
     {
        $Admin="checked";
     }

      if(in_array("Create User", $pieces, true)) 
      {
          $CreateUser="checked";
      }

      ?>

在我的控制器文件中,我只是传递$ data数组而不是编写逻辑。

     $data['users'] = $this->Usermodel->RetrieveUsers( $userid);
     $this->load->view('edituserview', $data);

现在我可以正确获得正确的状态。

答案 1 :(得分:0)

<?php
  $data['Admin'] = false;
  $data['CreateUser'] = false;
  for($i=0;$i<$max;$i++) {
    if($pieces[$i] == "Admin") {
      $data['Admin'] = true;
    }
    if($pieces[$i] == "Create User") {
      $data['CreateUser'] = true;
    }
  }

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

试试这个