我在codeigniter项目中,正在查看views文件夹中的文件。 php如下:作为一个完整的初学者,试图理解这一点,我试图将下面的“用户名”的值更改为数据库中另一个字段“名字”。将下面的字段从用户名更改为名字将导致错误。
我注意到有一个循环使用变量:$ results as $ result)
[作为一个普通人,我想知道的是如何追溯这些变量是从哪里被调用的,以及要查找哪些文件以便找出如何使用必填字段的方法,在这种情况下,是名字,也来自数据库。
我已经研究了控制器,但是找不到与之类似的东西,也不知道从哪里开始,因为开发人员并不一定要逻辑上标记所有内容。
[我的问题是:当有人进入一个他们不知道的代码库时,您将如何追溯逻辑以找出需要查找变量和进行更改的位置。
在此问题上的任何帮助将不胜感激。
<?php
$rank = 0;
foreach($results as $result){$rank++;
?>
<tr style="border: 1px solid #ebebeb;padding-bottom: 0px;background-color: #fff;">
<td ><?php echo $rank; ?></td>
<td ><?php echo $result->username; ?></td>
<td ><?php echo $result->marks; ?></td>
<td ><?php echo $result->percentage; ?></td>
<td ><?php echo $result->duration; ?></td>
<td ><?php echo $result->date_time; ?></td>
<td>
<?php /*<a href="<?php echo site_url('result/edit/'.$result->id); ?>"><i class="glyph-icon tooltip-button demo-icon icon-edit" title="Edit" style="color:blue;" data-original-title=".icon-edit"></i></a>
*/?>
<a onclick="return confirm('Are you Sure to Delete this Result???');" href="<?php echo site_url('result/delete/'.$result->id); ?>"><i class="glyph-icon tooltip-button demo-icon icon-close" title="Delete" data-original-title=".icon-close" style="color:red;"></i></a>
</td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
</div>
</div>
<?php } ?>
我提到的页面上的起始代码如下:同样,请注意$ results。它是什么?我在哪里可以找到它的起源并试图找到填充它的字段?
<?php if(empty($results)) {?>
<div id="page-title">
<h2>No Results Found.</h2>
</br>
</div>
<?php } else { ?>
<div id="page-title">
<h2>All Results</h2>
<h3>Quiz : <?php echo $results[0]->quiz_name; ?></h3>
<a href="<?php echo site_url('result/delAll'); ?>/<?php echo $results[0]->quiz_id; ?>" class="btn btn-primary" title="" style="float: right;" id="btnDelete">Delete All</a>
</br>
</div>
到目前为止我所做的:
我发现了似乎与其相关的控制器-粘贴在下面:
load-> model('results'); if(!$ this-> session-> userdata('ID')) { $ this-> session-> set_flashdata('noAccess','Sorry'); redirect(site_url()); }
}
public function index($id='')
{
$data['results'] = $this->results->get_resultByQuiz(-1);
$this->load->view('template/header.php');
$this->load->view('result/index.php',$data);
$this->load->view('template/footer.php');
}
public function view($id='')
{
$data['results'] = $this->results->get_resultByQuiz($id);
$this->load->view('template/header.php');
$this->load->view('result/index.php',$data);
$this->load->view('template/footer.php');
}
public function delAll($id = '')
{
$updated = $this->results->delAll($id);
if($updated)
{
$this->session->set_flashdata('resultDeleteSuccess','result');
}
else
{
$this->session->set_flashdata('resultDeleteFail','result');
}
redirect('quiz');
}
public function delete($id = '')
{
$updated = $this->results->delete_results($id);
if($updated)
{
$this->session->set_flashdata('deleteSuccess','result');
}
else
{
$this->session->set_flashdata('deleteSuccess','result');
}
redirect('result');
}
}
我也找到了这个相关模型。
<?php if(!defined('BASEPATH')) exit ("No direct script access allowed");
class Results extends CI_Model {
public function get_all_results()
{
$query = $this->db->get('quiz_takers');
return $query->result();
}
public function get_resultByQuiz($ID)
{
$query = $this->db->query("select (select quiz_name from quizes where id = qt.quiz_id) as quiz_name, qt.* from quiz_takers qt where qt.quiz_id = '$ID' order by qt.percentage desc ");
return $query->result();
$this->db->where('quiz_id',$ID);
$query = $this->db->get('quiz_takers');
return $query->result();
}
public function delAll($ID = '')
{
$this->db->where('quiz_id',$ID);
return $this->db->delete('quiz_takers',$data);
}
public function delete_results($ID = '')
{
$this->db->where('id',$ID);
return $this->db->delete('quiz_takers',$data);
}
}
在确定在何处更改$ results变量中的内容时,我仍然不是一个明智的选择,因此我可以将字段从用户名更改为名字。
我怀疑这可能与此有关:
return $query->result();
但是我在哪里搜索查询?在模型/控制器中-还是其他地方?
在codeigniter
中,
view
是您编写在前端看到的代码的地方。model
是您编写DB
查询的位置。controller
是连接view
和model
(前端与DB一起使用),即作为中介。另外,routes
是生成为您的控制器名称,然后是函数名称,再加上您提供给该parameter
的任何其他function
。 因此,如果您的route(URL)
是
your-website/controller_name/function_name/additional-parameter
您需要查看function {function_name}
中的controller {Controller_name}
。 有时您可能会发现controller
或function
不在应有的位置(来自URL
),然后您需要检查是否为该特定route
提供了任何URL
,在application->config->routes.php
请问您的URL
是
www.site/xyz
$route['xyz'] = 'controller_name/function_name'; // route set in routes.php
您需要在function {function_name}
中寻找controller {Controller_name}
。您无需担心model
或view
,因为它们被调用并加载到controller
本身中。现在,关于$results
,提供给key
中的array variable
的是controller
中提供给variable
的view
。参见示例-
Controller
$data['xyz'] = 'some-value'; // or $whatever['xyz'];
$data['abc'] = 'any-value'; // ...
$this->load->view('some_folder/some_view', $data); // pass $data array or $whatever
视图(位于view->some_folder->some_view.php
)
echo $xyz; // output: some-value -- key {xyz} of $data becomes a variable
echo $abc; // output: any-value -- key {abc} of $data becomes a variable