如何动态地将值从视图传递到控制器以获取不同的值

时间:2015-05-01 13:37:52

标签: php codeigniter

在codeigniter中,我已经从控制器传递了一个数组来查看

控制器代码:

$data['x'] = $this->home_model->get_latest_five_rows();
$this->load->view('templates/header', $data);
$this->load->view('app/'.$page, $data);
$this->load->view('templates/footer', $data);

查看代码:

<? foreach ($x as $listing): ?>
Posted by <a href="/users/profile/<? echo $listing['by_user_id']; ?>"><? echo $listing['by_user_id']; ?></a>

我想从&#34; $ listing [&#39; by_user_id&#39;]&#34;中获取用户名。我如何实现这一目标?

基于评论相应地修改了它但没有成功

视野中的代码

<script type="text/javascript">
$.ajax({
type: "POST",
url: "users/user_name",
data: {send: <? echo $job_listing['by_user_id']; ?>},
success: function(value) {

 }
 });
 </script>

控制器:

public function user_name($id) {
    $data['user_name'] = $this->user_model->get_user_name($this->post('id'));
    $this->load->view('app/', $data);
}

型号代码:

public function get_user_name($id) {

    $query ="select user_full_name from app_users where id = ".$id;
    $res = $this->db->query($query);               
    return $res->result_array();
}

我哪里错了?提前谢谢。

1 个答案:

答案 0 :(得分:0)

你真的不应该从视图中将数据传递给控制器​​(好吧,除非它是一个匹配路由模式的用户操作,但这是解释MVC for web的另一个问题)。

如果视图从控制器接收到数据,那么根据定义,您正在寻找的值应该在某个时间存在于控制器中。

控制器中的

$data['x']等于(按值或按引用)$x在您的视图中。

也就是说,如果您在视图中执行此操作:

foreach ($x as $listing)
{
    $user_id = $listing['by_user_id'];
}

...然后,在变量结构的上下文中,它在您的控制器中等效于此:

foreach ($data['x'] as $listing)
{
    $user_id = $listing['by_user_id'];
}