如何将我自己的值从codeigniter中的控制器传递给视图

时间:2012-12-07 06:08:46

标签: codeigniter

我有一个视图文件update.php,其中包含以下代码:

php foreach ($record as $my_records)

$val1=$my_records['name'];

$val2=$my_records['faculty'];

$val3=$my_records['level'];

$val4=$my_records['year'];

?>

php endforeach 

我有一个带有函数update的控制器,这个控制器从这样的模型中获取记录:

$data['record']=$this->myproject_model->get_all_values($rollno); 

然后在视图上传递这些记录,如下所示

$this->load->view('iproject/update',$data);

但是,我需要从控制器向视图发送我自己的值。也就是说,我需要清除我从模型中获得的数据,并将某些情况下我自己的值发送到视图中。那么,如何将我自己的数据放在$data['record']数组中,并按照上面update.php代码中显示的方式在视图中获取这些数据?

4 个答案:

答案 0 :(得分:0)

从模型中获取后,您始终可以修改控制器中的$data['record']

但MVC的方式是从模型本身发送正确的数据。

答案 1 :(得分:0)

您可以发送如下静态数据:

$data = array(
     'x' =>'hello',
     'y' =>'how are',
    );

您可以将此$data数组发送到视图,作为之前发送$data的方式,您可以访问它。

答案 2 :(得分:0)

$records = $this->myproject_model->get_all_values($rollno);

$reults = $this->prepare_records($records); // Below.

$data['results'] = $results;
$this->load->view('iproject/update', $data);

你需要用你的逻辑编写的函数(最简单 - 但不是最好的 - 放置函数的位置在控制器中。):

private function prepare_records($records)
{
  $results = array();
  // Fill up $results
  return $results;
}

更好的策略是将函数放在myproject_model中,以保持控制器的清洁和模型中数据的逻辑。

你会替换:

$reults = $this->prepare_records($records);

$reults = $this->myproject_model->prepare_records($records);

将功能移至模型。如果它在你的模型中,你需要将声明更改为public(这很酷,因为现在你可以从你想要的任何控制器中调用它)。

public function prepare_records($records) { }

答案 3 :(得分:0)

在这种情况下,我会在foreach循环中使用指针。然后,您可以检查条目是否需要修改,然后进行更改。

在下面的示例中,我将检查用户是否处于第4年/最后一年 - 如果是,我们会在他们的教师姓名前加上“最终年级学生 - ”。这是一种更加智能的代码,可以正确地准备显示结果,而不是创建新数组并在那里填充。

foreach($records as &$record){
    if($record['year'] == '4'){
        $record['faculty'] = 'Final Year Student - ' . $record['faculty'];
    }
}

现在,一旦循环完成,$ records将包含修改后的条目。