Php 如何检查视图是否存在?

Php 如何检查视图是否存在?,php,codeigniter,Php,Codeigniter,在CodeIgniter中,我试图在加载视图之前检查文件是否存在于控制器中,我尝试- public function foo($file = "") { if (file_exists(APPPATH."views/log/{$file}.".EXT)) { $this->load->view('log/'.$file); } else show_404(); } 但是文件存在,然后file\u exists()方法返

在CodeIgniter中,我试图在加载视图之前检查文件是否存在于控制器中,我尝试-

public function foo($file = "")
{
    if (file_exists(APPPATH."views/log/{$file}.".EXT))
    {
        $this->load->view('log/'.$file);
    }
    else
        show_404();
}
但是文件存在,然后
file\u exists()
方法返回
false
,我也使用
var\u dump()检查了它。我不明白这里的问题是什么,我猜有一些与映射相关的问题,因为目录结构如下-

application
   |--controllers
   |  |--ctrl.php   //Controller file where I am checking
   |--views
      |--log
         |-- .. //Checking files for here
但我该如何解决


编辑:只是将“视图”错误地输入到“视图”(在我调用
文件的代码中,如果
中的
方法存在()
,如果
),请更正它。

Codeigniter中的
EXT
常量等于
.php
,并在
index.php
中定义:

// The PHP file extension
// this global constant is deprecated.
define('EXT', '.php');
您正在添加一个额外的点:

APPPATH."views/log/{$file}.".EXT
//                        ^
这将导致类似于
views/log/myfile..php


由于常量正在逐步淘汰,您应该避免使用它。

sry tht输入错误,但问题仍然存在。请发布正确的代码,说明如何调用
foo()
,如何向其传递参数,以及
var\u dump()
的结果。案例很重要,视图文件名应该是小写的。控制器名是“test”,所以我正在加载页面,比如
http://localhost/myapp/test/foo/viewfile
和我文件
viewfile.php
存在于
application/views/log/
@WesleyMurch中,它有
application/views/log/viewfile.php
否,我已经打印了APPPATH的结果。views/log/{$file}。EXT
。正如我在上面的评论中提到的,它有
application/views/log/viewfile.php
。但是,如果您没有更改常量定义,那么它也不起作用,因为在给定代码的情况下,这似乎是不可能的。另外,
APPPATH
应该是一个完整的服务器路径,这样就不会累加,而是显示一个相对路径。请准确显示你是如何检查价值的,你的帖子。哦,是的!它正在工作:)。但是当我打印了APPPATH.views/log/{$file}.EXT的值时,它给出了
application/views/log/viewfile.php
。我不知道问题出在哪里,但不管怎样,谢谢:)所以,我认为是小精灵的问题。把它分配给一个变量,然后检查该变量的值会更有意义。好的,祝你好运。