【问题标题】:Passing a value from controller to view in codeigniter从控制器传递值以在 codeigniter 中查看
【发布时间】:2014-09-16 14:35:18
【问题描述】:

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

    <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 时,我看不到复选框的正确状态(无论是否选中)。我想传递控制器中的值以查看。

我们将不胜感激任何帮助。

【问题讨论】:

  • 可能没有足够的信息来帮助您调试。首先确保 $pieces[$1] 具有预期值但与它相呼应。然后确保 $data 具有 print_r($data) 的预期值。
  • 我能问一下 $pieces 里面有什么吗?你从 $i 中收集了什么?
  • @PK 很抱歉,我没有包含整个代码,因为它包含模型文件和控制器中的一些冗长逻辑。当我单独打印 $pieces[$i] 时,我得到了预期的数据。
  • @JamesLalor 在 $pieces 内我正在收集一组特权。例如,当我回显 $pieces[$i]; 时,我可以得到“Admin”。 $i 用于遍历循环。很抱歉我没有完整的代码让大家感到困惑。
  • 你每次都在覆盖你的管理员

标签: php arrays codeigniter checkbox


【解决方案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);

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

【讨论】:

    【解决方案2】:
    <?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);
    ?>
    

    试试这个

    【讨论】:

      猜你喜欢
      • 2012-09-02
      • 2012-12-26
      • 1970-01-01
      • 2016-07-06
      • 1970-01-01
      • 2012-12-22
      • 2017-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多