Codeigniter框架:我们如何跟踪给定“视图” PHP代码段中的变量来自何处?

问题描述 投票:0回答:1

我在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>
                                &nbsp; */?>
                                    <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>

到目前为止我所做的:

  1. 我发现了似乎与其相关的控制器-粘贴在下面:

    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 variables view controller field
1个回答
1
投票

codeigniter中,

  • view是您编写在前端看到的代码的地方。
  • [model是您编写DB查询的位置。
  • controller是连接viewmodel(前端与DB一起使用),即作为中介。另外,routes是生成为您的控制器名称,然后是函数名称,再加上您提供给该parameter的任何其他function

因此,如果您的route(URL)

your-website/controller_name/function_name/additional-parameter

您需要查看function {function_name}中的controller {Controller_name}。 有时您可能会发现controllerfunction不在应有的位置(来自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}。您无需担心modelview,因为它们被调用并加载到controller本身中。现在,关于$results,提供给key中的array variable的是controller中提供给variableview。参见示例-

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

[有关更多详细信息,您可能想查看hereherehere。看看是否对您有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.