将数据从视图传递到codeigniter中的控制器

时间:2012-02-20 00:00:22

标签: php codeigniter

好吧,我有一个问题。我正在构建一个名称列表。这个名称是从mysql查询中获取的。控制器从模型中接收这些名称,然后传递给视图,视图在列表中打印出来。当您点击名称时,另一个页面打开显示关于姓名的每一个细节(电话,ecc ......)。我的问题是如何做到这一点。我的意思是我知道如何创建列表这就是我的工作方式:

<ul>

        <?php foreach ($users as $item): ?>

            <li><a href=""><?php echo $item->name . " " . $item->surname; ?></a></li>

        <?php endforeach; ?>

</ul>

当我点击姓名和姓氏的链接时,我必须转到包含该姓名和姓氏详情的页面。我该怎么做?我必须从视图中将名称和姓氏传递给控制器​​并进行查询吗?

3 个答案:

答案 0 :(得分:2)

我不确定您是如何构建控制器和视图的,但是您可以为用户使用这样的结构,其中uid是唯一的用户ID:

href="users.php?uid=123"
然后

users.php将使用GET变量uid从模型中加载请求用户信息,然后将该信息传递给您的视图。读取GET变量就像这样:

if ( isset($_GET['uid']) ) {
    $uid = $_GET['uid'];
    // Load info from model and present in view
} else {
    // Handle invalid or unspecified users, perhaps show all available users
}

一旦构建了基本功能,就可以使用Apache mod_rewrite规则,例如Sureround用来使网址漂亮。

答案 1 :(得分:2)

制作如下链接:

 <li>
   <a href="/user/get_user_details/<?php echo $item->name; ?>">
     <?php echo $item->name . " " . $item->surname; ?>
   </a>
 </li>

这将转到控制器用户,方法get_user_details并将$ item-&gt;名称作为参数传递给方法。使用此(或您传递的项目的任何属性)来显示该项目的详细信息。

答案 2 :(得分:1)

您应该通过URL传递每个名称​​的唯一ID,例如“/ users / getuser / 1”。如果您的控制器被称为“用户”,那么您将创建名为getuser的函数并使用$ this-&gt; uri-&gt; segment(3)从URL中检索ID。然后,您可以将其存储到您传递给模型的变量中,以获取记录的详细信息,然后加载用户详细信息视图。

function getuser()
{
  $userID = $this->uri->segment(3);

  // Then just load your model pass your $userID and load your view
}

In your href you would just output <?= "/users/getuser/" . $item->id; ?>