2016-12-24 86 views
0

我用CodeIgniter框架构建了一个网站。Codeigniter - 根本无法加载任何视图

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

每次我尝试加载另一个视图文件的代码$this->load->view('any_view_file');我得到的错误:

unable to load the requested file 'any_view_file'.php

例如我有与$这 - 问题>负载>视图(“available_lessons。 php',$ data);命令。所以让我们尝试重现问题,并通过觉得这...

  1. 我打电话的load_available_lessons()的Lessons.php控制器功能
  2. load_available_lessons()函数使用get_lessons()函数db_model.php模型并将结果保存在$ data ['result']
  3. 然后,load_available_lessons()函数调用available_lessons视图文件,同时解析$数据它。
  4. 这是问题出现的地方。 CodeIgniter无法加载视图。正如我前面解释的,CodeIgniter无法加载任何视图... !!!

有什么建议吗?

我的.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> 
+0

如果你在/ views下的子目录中的'any_view_file.php'需要执行'$ this-> load-> view('subdir/any_view_file.php','');' – ourmandave

+0

@ourmandave if view是一个php文件,你不需要包含'.php' http://www.codeigniter.com/user_guide/general/views.html#loading-a-view $ this-> load->视图( '子目录/ any_view_file'); – user4419336

+0

您是否为控制器命名了正确的文件名http://www.codeigniter.com/user_guide/general/controllers.html#let-s-try-it-hello-world和http://www.codeigniter.com/user_guide /general/styleguide.html#file-naming – user4419336

回答

0

由于@ourmandave和同事向我指出,我要补充一点,我想打电话给每一个视图名称前的“页/”。例如,在Lessons.php控制器中,我应该有$ this-> load-> view('pages/available_lessons.php',$ data);事实证明他是对的。 事情是,我不明白为什么我应该包括“网页/”的原因,因为我已经包含在Pages.php控制器中。看起来,当我调用视图时,页面控制器没有被使用。我将不得不在晚些时候研究它。 谢谢大家的宝贵意见!!!!!只是另一个菜鸟的错误...