2009-08-20 3 views
0

У меня немного путаницы в попытке ретроактивно создать новый базовый контроллер для моего проекта. Если я не ошибаюсь, все, что мне нужно сделать, это создать файл в application/libraries называется MY_baseController.php, содержащий следующее:Расширение шаблона контроллера в Kohana

class baseController extends Template_Controller 
{ 
    public function __construct() 
    { 
    parent::__construct(); 
    } 
} 

А потом переписать мои другие контроллеры продлить baseController вместо Template_Controller:

class Frontpage_Controller extends Template_Controller 

к

class Frontpage_Controller extends baseController 

Но когда я делаю это, доступ к Frontpage_Controller предупреждений мне, что:

Класс 'baseController' не найден ...

Что я здесь отсутствует?

ответ

2

После некоторых пустячный, я думаю, что следующее мое решение ...

Move MY_baseController.php из application/libraries и в application/controllers. Переименуйте его в base.php и измените следующую строку:

class baseController extends Template_Controller 

в

class Base_Controller extends Template_Controller 

Теперь в вашем контроллере Frontpage, продлить Base_Controller вместо baseController.

+1

Рассмотрим, что делает его абстрактно, как хорошо, «абстрактный класс Base_Controller расширяет Template_Controller». Это предотвращает случайную попытку сделать это через http://example.com/myapp/base. – Chadwick

0

Удостоверьтесь, что вы следуете соглашениям Коханы, чтобы убедиться, что все автоподгружается правильно! Есть аналогичные в отношении справочников моделей и библиотек.

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

Просто не забудьте добавить модуль в свой конфигурационный файл!

0

Я знаю, что это старый вопрос, но я подумал, что слову слово. Вам просто нужно удалить префикс MY_ из имени файла, поскольку он вам действительно нужен, только при расширении класса, содержащего _Core в системной папке. Например, файл для

class Controller extends Controller_Core 

будет называться MY_Controller.php.

В этом случае работает только имя файла baseController.php и помещается в папку библиотек.

0

Не обижайтесь, но мне пришлось ударить головой по компьютеру, чтобы он работал с Kohana 3.1. Я, наконец, понял, что синтаксис для расширения контроллера шаблона должен быть:

class Controller_Base extends Controller_Template 
Смежные вопросы