Codeigniter传递数据控制器以查看

时间:2015-10-17 18:35:01

标签: php codeigniter

这是我的控制器:

   class CommonController extends CI_Controller {
      public function __construct() {
        parent::__construct();
          $this->load->model('common_model'); //load your model my model is "common model"
      }

     public function add_work(){
     $names = $_POST['name'];
     $works = $_POST['work'];

     $allValues = array(); // array to contains inserted rows 
     foreach($names as $key => $name){
             $name= "your specified name";
             $insertdata = array();
             $insertdata['work'] = $works[$key];
             $insertdata['name'] = $name;
             $this->common_model->insert($insertdata);

             array_push($allValues,$insertdata);
        //$insert = mysql_query("INSERT INTO work(name,work) values ( '$name','$work')");
            }
  foreach($allValues as $insertRow){
     echo $insertRow['work'];
     echo $insertRow['name'];//this shows data well. but how to pass data in view.php
  }
  //view code will add here to show data in browser
}

基本上我想将所有数据传递给view.php以进行打印或导出。我怎么能这样做。

2 个答案:

答案 0 :(得分:9)

要加载视图,您应该这样做。

$this->load->view("filename");

如果你想传递数据进行查看,你应该这样做。

$this->load->view("filename",$data);

$data应该包含您要在视图中打印的所有参数。

语法是这样的。

$this->load->view("filename","data to view","Returning views as data(true / false");

如果第三个参数为true,则视图将作为数据。它不会作为输出转到浏览器。

修改

更改

$this->load->view('print_view',$insertdata);

$data['insertdata'] = $insertdata; 
$this->load->view('print_view',$data);

有关详情,请查看this link

答案 1 :(得分:4)

CI类如何相互传递信息和控制

调用视图 我们将看到控制器调用视图并将数据传递给它: 首先,它创建一个数据数组($ data)传递给视图;然后它加载并在同一个表达式中调用视图:

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

您可以从任何控制器中调用库,模型,插件或帮助程序,模型和库也可以相互调用以及插件和帮助程序。 但是,您不能从另一个控制器调用一个控制器,或从一个控制器调用控制器 模型或图书馆。模型或库只能通过两种方式引用回控制器: 首先,它可以返回数据。如果控制器分配如下值:

$foo = $this->mymodel->myfunction();

并且函数设置为返回一个值,然后该值将传递给控制器​​内的变量$ foo。

//样品

 public function display()
     {
     $data['text_to_display'] = $this->text_to_display;
     $data['text_color'] = $this->text_color;
     $this->load->view('display_view',$data);
     }

将动态数据添加到视图

数据通过视图的第二个参数中的数组或对象从控制器传递到视图 装载方法。以下是使用数组的示例:

$data = array(
’title’ => ’some’,
’heading’ => ’another some’,
’message’ => ’and another some’
);
$this->load->view(’view’, $data);

以下是使用对象的示例:

$data = new Someclass();
$this->load->view(’view’, $data);

发送多维数组

如果我们从数据库中提取数据,通常会 以多维数组的形式。

<?php
class foo extends CI_Controller {
public function index()
{
$data[’Books’] = array(’POEAA’, ’TDD’, ’Clean C’);
$data[’title’] = "Title";
$data[’heading’] = "Heading";
$this->load->view(’view’, $data);
}
}

在视图中

<html>
<head>
<title><?php echo $title;?></title>
</head>
<body>
<h1><?php echo $heading;?></h1>
<h3>My Books List</h3>
<ul>
<?php foreach ($Books as $item):?>
<li><?php echo $item;?></li>
<?php endforeach;?>
</ul>
</body>
</html>

More Learning

注意:

有第三个可选参数允许您更改方法的行为,以便它以字符串形式返回数据 而不是将其发送到您的浏览器。默认行为是false,将其发送到您的浏览器。记得 如果要返回数据,请将其分配给变量:

$string = $this->load->view(’view’, ’’, TRUE);

以上不会直接解决您的问题,但肯定有助于理解概念。