Codeigniter - 根本无法加载任何视图

时间:2016-12-24 17:00:17

标签: codeigniter continuous-integration

我已经使用CodeIgniter框架构建了一个网站。

不幸的是,我遇到了CodeIgniter load->view()函数的问题。

每当我尝试使用代码$this->load->view('any_view_file');加载另一个视图文件时,我都会收到错误:

  

无法加载请求的文件' any_view_file' .php

例如,我遇到了 $ this-> load->视图(' available_lessons.php',$ data); 命令的问题。因此,让我们尝试重新创建问题并通过...来思考......

  1. 我正在调用 Lessons.php 控制器的 load_available_lessons()函数
  2. load_available_lessons()函数使用 db_model.php 模型的 get_lessons()函数并将结果保存在 $数据['导致&#39]。
  3. 然后, load_available_lessons()函数在解析 $ data 时调用 available_lessons 视图文件。
  4. 问题出现了。 CodeIgniter无法加载视图。正如我之前解释的那样,CodeIgniter无法加载任何视图...... !!!
  5. 有什么建议吗?

    我的.htaccess文件:

    RewriteEngine on  
    RewriteCond $1 !^(index\\.php|images|css|lessons|robotos\\.txt)  
    RewriteCond %{REQUEST_FILENAME} !-f  
    RewriteCond %{REQUEST_FILENAME} !-d  
    RewriteRule ^(.*)$ index.php?/$1 [L,QSA]  
    

    来自我的config.php文件:

    $config['index_page'] = '';
    

    来自我的routes.php文件:

    $route['default_controller'] = 'pages/view';
    $route['(:any)'] = 'pages/view/$1';
    $route['translate_uri_dashes'] = TRUE;
    

    我的Pages.php控制器:

    <?php
    class Pages extends CI_Controller {
    
            public function view($page = 'home')
            {
                    if ( ! file_exists(APPPATH.'views/pages/'.$page.'.php'))
                    {
                            // Whoops, we don't have a page for that!
                            show_404();
                    }
                    else
                    {
                    $data['title'] = ucfirst($page); // Capitalize the first letter
    
                    $this->load->view('templates/header', $data);
                    $this->load->view('pages/'.$page, $data);
                    $this->load->view('templates/footer', $data);
                    }
            }
    }
    ?>
    

    我的Lessons.php控制器:

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    class Lessons extends CI_Controller {
    
            public function __construct()
            {
                    parent::__construct();
                    $this->load->model('db_model');
                    /* $this->load->library('acl'); */
                    /* $this->load->helper(array('form', 'url')); */
            }
    
            public function index()
            {
                    $this->load->view('available_lessons', array('error' => ' ' ));
            }
    
            public function load_available_lessons()
            {
                $data['result'] = $this->db_model->get_lessons();
                $this->load->view('available_lessons.php', $data); /* available_lessons */
            }
    }
    ?>
    

    我的db_model.php模型:

    <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    class db_model extends CI_Model{
    
            public function __construct()
            {
                    parent::__construct();
            }
    
    
            public function new_lesson($data)
            {
                /* Inserting in Table "lessons" of CodeIgniter's Database */
                $this->db->insert('available_lessons', $data);
            }
    
            public function get_lessons() /* $data */
            {
                /* Get lessons from Table "lessons" of CodeIgniter's Database */
                $this->db->select('Name, Description, DateAdded, LastEdit, UserID, FileName');
                $this->db->from('lessons');
                $query = $this->db->get();
                return $result = $query->result();
            }
    }
    
    ?>
    

    我的available_lessons.php查看文件:

    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');
    ?>
    
    <div class="container">
      <h6 class="description">Browse Lessons</h6>
      <div class="row">
        <section id="lessons-panel" class="col-xs-12 col-md-8 col-md-offset-2">
            <table>
            <tr>
            <th>Content</th>
            </tr>
            <?php foreach($this->result  as $r): ?>
            <tr><?php echo $r->content; ?>
    
                </tr>
            <?php endforeach; ?>
            </table>
        </section>
      </div>
    </div>
    

1 个答案:

答案 0 :(得分:0)

正如@ourmandave和一位同事向我指出的那样,我应该在我想要呼叫的每个视图名称之前添加“pages /”。例如,在Lessons.php控制器中,我应该有$ this-&gt; load-&gt; view('pages / available_lessons.php',$ data);事实证明他是对的。 问题是我无法理解我应该包含“pages /”的原因,因为我已经将它包含在Pages.php控制器中。当我调用视图时,似乎没有使用Pages Controller。我将在稍后进行调查。 谢谢大家的宝贵意见!!!!!只是另一个菜鸟错误...