Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

__consruct в модуле или любом другом конроллере


Recommended Posts

Собственно если прописать метод __construct в своем контроллере унаследованном от Controller  то получим ошибку:

 

Fatal error: Call to a member function get() on a non-object in Z:\home\test\www\system\engine\controller.php on line 10

 

 

Задался этим вопросом, когда решить объединить подгрузку ( load->model() ) всех  повторяющихся моделей в разных методах одного класса  в конструктор.

 

То ли я не так ООП понимаю, то ли причина кроется в другом?

 

OpenCart 2.1.0.2
 

Надіслати
Поділитися на інших сайтах


в своем контроллере унаследованном от Controller

А вы каким образом создаёте экземпляр класса вашего контроллера? Сама ошибка говорит о том, что у вас реестр не передан в конструктор.

Надіслати
Поділитися на інших сайтах


А вы каким образом создаёте экземпляр класса вашего контроллера? Сама ошибка говорит о том, что у вас реестр не передан в конструктор.

 

Так же как и все остальные уже имеющиеся. Да я это понял, ток вот не могу понять как получить доступ к этому заветному реестру. parent::$registry тоже приводит к ошибке.

Надіслати
Поділитися на інших сайтах


тоже самое будет, что и первом посте

У вас так должен выглядеть конструктор в вашем классе. А при создании экземпляра должно быть так:

$obj = new myClass($registry);
Надіслати
Поділитися на інших сайтах


 

У вас так должен выглядеть конструктор в вашем классе. А при создании экземпляра должно быть так:

$obj = new myClass($registry);

$obj = new myClass($this->registry);

Надіслати
Поділитися на інших сайтах

$obj = new myClass($this->registry);

Зависит от места расположения этой строчки. Если:

 

 

 

Так же как и все остальные уже имеющиеся.

 

То в 2.1 это index.php, где просто $registry (оно и в следующих версиях просто $registry, но файл уже - framework.php).

Хотя, это касается только контроллеров библиотеки. Я почему-то подумал именно про неё.

Змінено користувачем Dotrox
Надіслати
Поділитися на інших сайтах


Всем спасибо , сам так решил проблему 
class ControllerTestTest extends Controller {
	protected $registry;

	function __construct ($registry) {
		$this->registry = $registry;
	}
	 public function __get($key) {
		 return $this->registry->get($key);
	}

оказалось что достаточно этого, а я уже в такие дебри залез,  а всего то забыл в вызове родительского конструктора передать  $registry

function __construct ($registry) {
        parent::_construct($registry);
    }
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.