Кохана Посмотреть модель класс не найден

Я в тупике, я, должно быть, упускаю что-то базовое, любые идеи будут высоко оценены.

Я настроил новый проект 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 для справки.

Другие вопросы по тегам