我有一个视图文件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
代码中显示的方式在视图中获取这些数据?
答案 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将包含修改后的条目。