Перейти к содержанию

Рекомендуемые сообщения

Доброго дня.

Помогите разобраться, сил нет уже.

 

Не могу подключить контроллер своего модуля в файл admin/controller/catalog/product.php

 

Сам код подключения:

$this->load->controller('extension/module/yoagift');
$tmp = $this->controller_extension_module_yoagift->getProductGift($this->request->get['product_id']);
var_dump($tmp);

Результат:

Fatal error: Call to a member function getProductGift() on null in /test/system/storage/modification/admin/controller/catalog/product.php on line 1316

Еще больше путаницы добавляет тот факт, что если вместо контроллера подключить модель, а обработку возвращаемых значений из БД перенести из модуля в product.php -  то проблем нет, все работает. Т.е. со следующим кодом проблем нет:

$this->load->model('extension/module/yoagift');
$tmp = $this->model_extension_module_yoagift->getProductGift($this->request->get['product_id']);
// Разбираем и отправляем на view

Вот структура файлов модуля: 

769465815_ScreenShot2018-10-21at17_05_45.thumb.png.92c7e6b606a3615ba9293d6b68b3505a.png

 

Содержимое контроллера:

 

<?php
class ControllerExtensionModuleYoagift extends Controller {
	private $error = array();

	public function install() {
		$this->db->query("CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "product_gift` (
			`product_id` int(11),
			`gift_id` int(11),
			PRIMARY KEY (`product_id`, `gift_id`)
		) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;");
	}

	public function index() {

		// Initial
		$this->load->model('extension/module/yoagift');
		$this->load->language('extension/module/yoagift_product');

		// For settings page
		if ($this->request->get['route'] == "extension/module/yoagift") {

			$data = array();
			$data = array_merge($data, $this->load->language('extension/module/yoagift'));

			$this->document->setTitle($this->language->get('heading_title'));
			$this->load->model('setting/setting');

			if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
				$this->model_setting_setting->editSetting('yoagift', $this->request->post);
				$this->session->data['success'] = $this->language->get('text_success');
				$this->response->redirect($this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=module', true));
			}

			if (isset($this->error['warning'])) {
				$data['error_warning'] = $this->error['warning'];
			} else {
				$data['error_warning'] = '';
			}

			$data['breadcrumbs'] = array();
			$data['breadcrumbs'][] = array(
				'text' => $this->language->get('text_home'),
				'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], true)
			);
			$data['breadcrumbs'][] = array(
				'text' => $this->language->get('text_extension'),
				'href' => $this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=module', true)
			);
			$data['breadcrumbs'][] = array(
				'text' => $this->language->get('heading_title'),
				'href' => $this->url->link('extension/module/yoagift', 'token=' . $this->session->data['token'], true)
			);

			$data['action'] = $this->url->link('extension/module/yoagift', 'token=' . $this->session->data['token'], true);
			$data['cancel'] = $this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=module', true);
			$data['yoagift_status'] = $this->config->get('yoagift_status');

			if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
				$this->model_setting_setting->editSetting('yoagift', $this->request->post);

				$this->session->data['success'] = $this->language->get('text_success');

				$this->response->redirect($this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=module', true));
			}

			$data['header'] = $this->load->controller('common/header');
			$data['column_left'] = $this->load->controller('common/column_left');
			$data['footer'] = $this->load->controller('common/footer');

			$this->response->setOutput($this->load->view('extension/module/yoagift', $data));

		}
		else {
			return false;
		}

	}

	protected function validate() {
		if (!$this->user->hasPermission('modify', 'extension/module/yoagift')) {
			$this->error['warning'] = $this->language->get('error_permission');
		}

		return !$this->error;
	}

	public function getProductGift($product_id) {
		$this->load->model('catalog/product');

		$data = array();

		$data['help_gift'] = $this->language->get('help_gift');
		$data['entry_gift'] = $this->language->get('entry_gift');
		$data['entry_select_gift'] = $this->language->get('entry_select_gift');

		$products = $this->model_extension_module_yoagift->getProductGift($product_id);

		$data['product_gifts'] = array();
		foreach ($products as $product) {
			$gift = $this->model_catalog_product->getProduct($product);

			$data['product_gifts'][] = array(
				'product_id' => $gift['product_id'],
				'name'       => $gift['name']
			);
		}	
		return $data;
	}

}

Значения свойства тоже передать не могу, такое чувство что тупо не создается экземпляр класса ControllerExtensionModuleYoagift.

Собственно вопрос: какого черта?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, element100500 сказал:

Собственно вопрос: какого черта?

посмотрите в классе Loader методы  controller  и model   и все станет понятно

с контроллером, так не выйдет  

5 часов назад, element100500 сказал:

$tmp = $this->controller_extension_module_yoagift->getProductGift($this->request->get['product_id']);

метод contгоller,    ничего не пишет в реестр, что бы можно было дальше работать как с моделью

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 hours ago, fanatic said:

метод contгоller,    ничего не пишет в реестр, что бы можно было дальше работать как с моделью

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

P.S. ООП, которое мы заслужили

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.