Наконец-то, благодаря урокам Морковина я таки разобрался с тем, как сделать авторизацию на кохане. Но теперь возникает другая проблема...
У меня есть контроллер Basic, который проверяет, авторизован пользователь или нет, он расширяет Controller_Template, вот его код:
Код:
<?php defined('SYSPATH') or die('No direct script access.');
abstract class Basic extends Controller_Template {
public function before()
{
$session = Session::instance();
$session->set('auth_redirect', $_SERVER['REQUEST_URI']);
$auth = Auth::instance();
if($auth->logged_in() == 0) HTTP::redirect(URL::base().'/auth');
return parent::before();
}
} // End Basic
По логике, этот контроллер наследуют все остальные контроллеры. Кроме того, у меня есть 2 части приложения: административная и пользовательская. Я делаю базовый контроллер для админки, вот его код:
Код:
<?php defined('SYSPATH') or die('No direct script access.');
abstract class Controller_Admin_Basic extends Basic {
public $template = 'admin/basicview';
public function before()
{
$this->template->title = '1';
$this->template->header = '1';
$this->template->content = '1';
$this->template->footer = '1';
$this->template->styles = array('reset','style','admin_menu');
$this->template->scripts = array('admin_menu');
return parent::before();
}
} // End Basic
Как вы видите, строка
public $template = 'admin/basicview'; определяет базовый вид админки. Потому как базовые ВИДы админки и пользовательской части разные. По аналогии, делается и базовый контроллер пользовательской части:
Код:
<?php defined('SYSPATH') or die('No direct script access.');
abstract class Controller_Arm_Basic extends Basic {
public $template = 'arm/basicview';
public function before()
{
$this->template->title = '1';
$this->template->header = '1';
$this->template->content = '1';
$this->template->footer = '1';
$this->template->styles = array('reset','style','admin_menu');
$this->template->scripts = array('admin_menu');
return parent::before();
}
} // End Basic
Но почему-то возникает ошибка
Цитата:
ErrorException [ Warning ]: Attempt to assign property of non-object
APPPATH/classes/Controller/Admin/Basic.php [ 9 ]
4
5 public $template = 'admin/basicview';
6
7 public function before()
8 {
9 $this->template->title = '1';
10 $this->template->header = '1';
11 $this->template->content = '1';
12 $this->template->footer = '1';
13 $this->template->styles = array('reset','style','admin_menu');
14 $this->template->scripts = array('admin_menu');
APPPATH/classes/Controller/Admin/Basic.php [ 9 ] » Kohana_Core::error_handler(arguments)
SYSPATH/classes/Kohana/Controller.php [ 69 ] » Controller_Admin_Basic->before()
{PHP internal call} » Kohana_Controller->execute()
SYSPATH/classes/Kohana/Request/Client/Internal.php [ 97 ] » ReflectionMethod->invoke(arguments)
SYSPATH/classes/Kohana/Request/Client.php [ 114 ] » Kohana_Request_Client_Internal->execute_request(arguments)
SYSPATH/classes/Kohana/Request.php [ 990 ] » Kohana_Request_Client->execute(arguments)
DOCROOT/index.php [ 118 ] » Kohana_Request->execute()
Как буд-то объекта $this->template не существует вовсе. Что я делаю не так?