我很难过,我必须遗漏一些基本的东西,任何想法都会非常感激。
我已经设置了一个新的Kohana项目,可以与模型和控制器一起使用。对于这个例子,我已经将它剥离回用户的单个非常基本的模型和单个具有单个索引操作的控制器。
我决定使用KOstache作为我的模板引擎,因为我听到了很好的事情。我下载了模块和供应商子模块,这似乎工作正常。
当我尝试创建一个名为View_User的视图模型类的新实例时,我的问题就出现了,kohana抛出了一个* ErrorException [致命错误]:未找到类'View_User'*
我的目录结构如下
application
|_classes
| |_Controller
| | |_User.php
| |_Model
| | |_User.php
| |_view
| |_user.php
|_templates
|_user.mustache
项目中还有其他文件夹,但我相信这些是相关的文件夹。
我的控制器似乎是有问题的类
<?php defined('SYSPATH') or die('No direct script access.');
class Controller_User extends Controller {
public function action_index()
{
$renderer = Kostache_Layout::factory();
$view = new View_User;
$view->title = 'This is the test title';
$this->response->body($renderer->render($view));
}
}
这不起作用并且抱怨它在我的classes / view / user.php文件中找不到类View_User我明显有一个View_User类
<?php
class View_User {
}
现在我认为我设置KOstache或Kohana的方式存在某种问题,但我不确定我做错了什么。
如果我将类定义包含在classes / Controller / User.php的底部,那么一切都按预期工作,它只是在另一个文件中找不到该类。
从我读过的,如果自动加载器尝试加载类View_User,它将在classes / view / user.php中查找
我做错了什么?
答案 0 :(得分:1)
当然,问题在于文件夹和文件名。
来自Kohana v3.3 Doc:“类名应该使用带有下划线的大写第一个字母来分隔单词。下划线很重要,因为它们直接反映了文件系统中的文件位置。”
classes / view / user.php应该成为classes / View / User.php
参考:http://kohanaframework.org/3.3/guide/kohana/conventions#class-names-and-file-location
答案 1 :(得分:0)
Views文件夹不应该在类下面,但应该是这样的:
application
|_classes
| |_Controller
| | |_User.php
| |_Model
| | |_User.php
|_views
| |_user.php
|_templates
|_user.mustache
您可以在此http://kohanaframework.org/3.0/guide/kohana/files查看以供参考。
答案 2 :(得分:0)
事实证明,这是我的文件夹和文件名的一个案例问题。
classes / view / user.php应该是
classes / View / User.php用于名为View_User
的类更改后,一切都按预期工作。
答案 3 :(得分:0)
您可能遇到权限问题。在我的情况下,httpd服务(apache2)无法访问我的web项目文件。 这是一个残酷的解决方案(仅在您的安全情况允许时才这样做):
$ sudo chmod -R 0777 /var/www/html/mysite/