2013-04-27 2 views
0

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

У меня есть новый проект Kohana, который отлично работает с моделями и контроллерами. В этом примере я разделил его на одну очень базовую модель для пользователя и один контроллер с одним действием индекса внутри него.

Я решил использовать KOstache в качестве моего механизма шаблонов, поскольку я слышал о нем хорошие вещи. Я загрузил модуль и подмодуль поставщика, и, похоже, он работает нормально.

Моя проблема arrises при попытке создать новый экземпляр моего зрения модели класса с именем View_User, Кохана бросает * ErrorException [Fatal Error]: Class «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 еще в моих классах/просмотра/файла User.php Я ясно есть класс View_User

<?php 
class View_User { 
} 

Теперь я предполагаю, что это какое-то проблема с тем, как я настраиваю KOstache или Кохан, но я не уверен, что я делаю неправильно.

Если я включаю определение класса в нижней части классов/Controller/User.php, тогда все работает так, как ожидалось, он просто не находит класс в другом файле.

Из того, что я прочитал, если автозагрузчик пытается загрузить класс View_User это будет выглядеть в классах/просмотр/user.php

Что я делаю неправильно?

+0

Что Kohana версии вы используете? Я заметил, что вы отметили его 3.2, но я понимаю, почему это не сработает, если это будет 3.3. –

+0

@MichalM Извините, тег был неправильным, я использую 3.3. Это была проблема с именованием каталогов, которая должна была быть классами/View/User.php not classes/view/user.php, поскольку имя класса было View_User not view_user. –

+0

Вот что я думал, отсюда и вопрос. :) –

ответ

1

Несомненно, проблема связана с именами папок и файлов.

От Kohana v3.3 Doc: «Имена классов должны иметь прописные буквы первого порядка с символами подчеркивания для разделения слов. Подчеркивания важны, поскольку они непосредственно отражают расположение файла в файловой системе».

классы/view/user.php должны стать классами/View/User.PHP

Ссылка: http://kohanaframework.org/3.3/guide/kohana/conventions#class-names-and-file-location

0

папка Просмотров не должны быть под классами, но должно быть так:

application 
|_classes 
|  |_Controller 
|  | |_User.php 
|  |_Model 
|  | |_User.php 
|_views 
| |_user.php 
|_templates 
    |_user.mustache 

Вы можете посмотреть здесь http://kohanaframework.org/3.0/guide/kohana/files для справки.

+0

Я верю, что это верно для просмотров Kohana, но не для View_Models для KOstache. В любом случае я попытался поместить его в папку views, и у этого все еще есть одно и то же исключение. –

0

Оказалось, что это была проблема в папках и именах файлов.

Классы/вид/user.php должен был

классы/View/User.php для классов я назвал View_User

После изменения этого все работает, как ожидалось.

0

Вы можете иметь проблемы разрешения. В моем случае это был сервис httpd (apache2), который не мог получить доступ к моим файлам веб-проектов. Вот зверское решение (сделать это, только если ситуация в области безопасности это позволяет):

$ sudo chmod -R 0777 /var/www/html/mysite/ 

Подробнее: move_uploaded_file gives "failed to open stream: Permission denied " error after all configurations i did

+1

'chmod 777' обычно [ужасное решение] (https://serverfault.com/questions/364677/why-is-chmod-r-777-destructive) – Machavity

Смежные вопросы