Кохана Посмотреть модель класс не найден
Я в тупике, я, должно быть, упускаю что-то базовое, любые идеи будут высоко оценены.
Я настроил новый проект Kohana, который отлично работает с моделями и контроллерами. Для этого примера я вернул его обратно к единой базовой модели для пользователя и отдельному контроллеру с одним индексным действием внутри.
Я решил использовать KOstache в качестве движка шаблонов, так как слышал о нем много хорошего. Я скачал модуль и подмодуль продавца, и это, кажется, работает нормально.
Моя проблема возникает при попытке создать новый экземпляр моего класса модели представления с именем View_User, kohana выдает * ErrorException [ Fatal Error ]: класс '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));
}
}
Это не работает и жалуется, что не может найти класс View_User в моем файле classes/view/user.php. У меня явно есть класс View_User
<?php
class View_User {
}
Теперь я предполагаю, что это какая-то проблема с настройкой KOstache или Kohana, но я не уверен, что делаю неправильно.
Если я добавлю определение класса внизу classes/Controller/User.php, то все будет работать, как и ожидалось, просто не найдет класс в другом файле.
Из того, что я прочитал, если автозагрузчик попытается загрузить класс View_User, он будет выглядеть в classes/view/user.php
Что я делаю неправильно?
4 ответа
Конечно, проблема связана с именами папок и файлов.
Из документа Kohana v3.3: "Имена классов должны иметь заглавные первые буквы с подчеркиванием для разделения слов. Подчеркивания имеют большое значение, поскольку они непосредственно отражают расположение файла в файловой системе".
classes/view/user.php должен стать классами /View/User.php
Ссылка: http://kohanaframework.org/3.3/guide/kohana/conventions
Оказывается, это была проблема с моими папками и именами файлов.
Классы /view/user.php должны были быть
classes/View/User.php для классов, которые я назвал View_User
После изменения все это работает как положено.
У вас может быть проблема с разрешением. В моем случае это был сервис httpd (apache2), который не мог получить доступ к файлам моего веб-проекта. Вот жестокое решение (делайте это, только если ваша ситуация с безопасностью позволяет это):
$ sudo chmod -R 0777 /var/www/html/mysite/
Дополнительная информация: move_uploaded_file выдает ошибку "Не удалось открыть поток: отказано в доступе" после всех конфигураций, которые я сделал
Папка Views не должна быть под классами, но должна быть такой:
application
|_classes
| |_Controller
| | |_User.php
| |_Model
| | |_User.php
|_views
| |_user.php
|_templates
|_user.mustache
Вы можете посмотреть здесь http://kohanaframework.org/3.0/guide/kohana/files для справки.