Расширение контроллера шаблонов в Kohana

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

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

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

class Frontpage_Controller extends Template_Controller

to

class Frontpage_Controller extends baseController

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

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

Что мне здесь не хватает?


person Sampson    schedule 20.08.2009    source источник


Ответы (4)


После некоторого возни я думаю, что следующее решение...

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

class baseController extends Template_Controller

в

class Base_Controller extends Template_Controller

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

person Sampson    schedule 20.08.2009
comment
Подумайте также о том, чтобы сделать его абстрактным, абстрактный класс Base_Controller расширяет Template_Controller. Это предотвращает случайную попытку отобразить его через example.com/myapp/base. - person Chadwick; 06.04.2010

Убедитесь, что вы следуете Kohana Conventions, чтобы убедиться, что все автоматически загружается правильно! Есть аналогичные в отношении Models Helpers и Libraries.

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

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

person Patrick    schedule 23.08.2009

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

class Controller extends Controller_Core

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

В этом случае достаточно назвать файл baseController.php и поместить его в папку с библиотеками.

person Zahymaka    schedule 14.09.2009

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

class Controller_Base extends Controller_Template
person Talha Anwer    schedule 17.07.2011