Php 如何在codeigniter中显示数据库中的内容,而无需从视图调用控制器?
我是codeigniter的新手。我遵循视频教程,成功创建了一个登录注册系统。注册或登录后,用户将进入名为members.php的页面 php是一个视图 我的控制器是main.php,模型是model-users.php 我想让members.php显示/拥有来自数据库的内容,以便用户在登录或注册后可以阅读它 我在网上查阅了一些资料,上面说不要从视图中调用控制器。如果不这样做,我怎么能实现上述目标Php 如何在codeigniter中显示数据库中的内容,而无需从视图调用控制器?,php,mysql,codeigniter,Php,Mysql,Codeigniter,我是codeigniter的新手。我遵循视频教程,成功创建了一个登录注册系统。注册或登录后,用户将进入名为members.php的页面 php是一个视图 我的控制器是main.php,模型是model-users.php 我想让members.php显示/拥有来自数据库的内容,以便用户在登录或注册后可以阅读它 我在网上查阅了一些资料,上面说不要从视图中调用控制器。如果不这样做,我怎么能实现上述目标 谢谢我没有任何代码示例,但我编写了一个简单的HTML示例,可以显示成员的姓名。 控制器: func
谢谢我没有任何代码示例,但我编写了一个简单的HTML示例,可以显示成员的姓名。 控制器:
function members(){
$members = $this->model-user->get_list(); //array of members
$this->load->view('members.php', $members); // load members in view
}
查看members.php
<html>
<body>
<table>
<tr>
<th>Name</th>
<th>Surname</th>
</tr>
<?php foreach($members as $m): ?>
<tr>
<tr><?php echo $m['name']; ?>
<tr><?php echo $m['surname']; ?>
</tr>
<?php endforeach; ?>
<table>
</body>
</html>
这是一个简短的例子。我希望你能理解 我认为这一点实际上非常清楚,也很容易理解。不过,这里有一个示例,说明了如何构建应用程序
控制器:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Members extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('members_model');
}
function index() {
$data['members'] = $this->members_model->get_members();
$this->load->view('header', $data);
$this->load->view('members');
$this->load->view('footer');
}
}
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Members_model extends CI_Model {
function get_members() {
$query = $this->db->get('members');
return $query->result_array();
}
}
<?php
print_r($members);
我想我知道你的意思,这绝对不是正确的方法,但如果你真的必须这样做,你可以从这样的视图调用模型。
在视图中
<div>
<?php
#You could load the model here or autoload it in config->autoload->models(i believe)
$data = $this->model_name->model_function();?>
foreach($data as $row):
echo '<pre>';
print_r($row);
echo '</pre>';
endforeach;
?>
</div>
foreach($行数据):
回声';
<?php foreach($ecms as $i){ ?>
<tr>
<td><?php echo $i->accnum; ?></td>
<td><?php echo $i->crdnum; ?></td>
<td><?php echo $i->fname; ?></td>
<td><?php echo $i->bday; ?></td>
</tr>
<?php } ?>
打印(行);
回声';
<?php foreach($ecms as $i){ ?>
<tr>
<td><?php echo $i->accnum; ?></td>
<td><?php echo $i->crdnum; ?></td>
<td><?php echo $i->fname; ?></td>
<td><?php echo $i->bday; ?></td>
</tr>
<?php } ?>
endforeach;
?>
以下是我的代码示例:
视图:
function masterHide()
{
$sql =" select * from ecms";
$query = $this->db->query($sql);
return($query->num_rows() > 0) ? $query->result(): NULL;
}
function search() {
// $this->MasterListAccess();
$this->load->model('navi_model');
$query = $this->navi_model->masterHide();
//check results or returned value of model
//print_r($query);
$data['ecms'] = $query;
$data['main_content'] = 'search';
$this->load->view('includes/template',$data);
}
控制器:
function masterHide()
{
$sql =" select * from ecms";
$query = $this->db->query($sql);
return($query->num_rows() > 0) ? $query->result(): NULL;
}
function search() {
// $this->MasterListAccess();
$this->load->model('navi_model');
$query = $this->navi_model->masterHide();
//check results or returned value of model
//print_r($query);
$data['ecms'] = $query;
$data['main_content'] = 'search';
$this->load->view('includes/template',$data);
}
首先,连接项目文件中的数据库,连接视图页面中的模型页面,然后尝试以下代码。
转到“查看”页面并尝试此代码
查看
20
21
名称
电子邮件
电话号码
如果我将函数members()放在一个单独的控制器中(即不在主控制器中),视图将如何识别它?我认为您缺少基本的功能。控制器调用视图。不是相反,我想我明白你的意思了。如果我错了,请告诉我:我可以从不同的控制器调用相同的视图并传递数据。视图将显示来自所有控制器的所有数据?@StacyJ,看,这里我写了一个CI的MVC模式。function members()是控制器函数,在这里调用model函数并获取成员,然后在视图中加载。函数get_list()在模型中,在这里您将执行查询以获取数组中的列表。在视图中,您只需将其加载到一个表中。这是一个简单的示例,向您展示如何执行查询、在视图中加载并显示它。我希望你们能理解我的观点。在这种情况下,页眉和页脚是两个独立的页面吗?它们是独立的模板。按照惯例,以这种方式分离模板,这样您就可以在整个网站上重复使用页眉和页脚部分,而不必在每个页面上都包含这些代码。如果答案对您有帮助,您应该将其标记为已接受。