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

массив $setting


Recommended Posts

Добрый день, уважаемые форумчане!

Пожалуйста, помогите понять, почему я не могу получить $setting в контроллере фронта:

public function index($setting) {
var_dump($setting);

получаю ошибку...

 

в контроллере админки пытаюсь так:

if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
            if (!isset($this->request->get['module_id'])) {
                $this->model_extension_module->addModule('cats', $this->request->post);
            } else {
                $this->model_extension_module->editModule($this->request->get['module_id'], $this->request->post);
            }

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

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

и так 

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

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

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

по примеру соседних контроллеров.

В админке модуль нормально устанавливается, выводится на фронте, если не пытаться достучаться до $setting. В таблице oc_module модуль записывается, где в поле setting - записаны настройки модуля.

не могу найти в инете, почему не получается. Вроде делаю по аналогии с соседними контроллерами, но не получается.

Может ли кто разъяснить, что я не правильно понимаю?

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


смотрите верные ли пути к контролеру так же смотрите статус модуля что был включен

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

модуль включен, он отображается во фронте, если я не использую $setting.

но в этом массиве по идее у меня limit для ограничения кол-ва вывода, и вот при попытке получить этот массив ничего не получается.

а какие пути смотреть? я все делал по аналогии с latest, вроде все так же прописано, только вместо latest пишу свой модуль

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


Смотрите catalog/controller/common/content_*.php

foreach ($modules as $module) {
...

$setting_info = $this->model_extension_module->getModule($part[1]);

 

Туда setting от модуля приходит?

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

хм...

да собсно если в стоковых latest сделать var_dump($setting) - то все тоже летит к чертям... при этом ниже:

$filter_data = array(
   'sort'  => 'p.date_added',
   'order' => 'DESC',
   'start' => 0,
   'limit' => $setting['limit']
);

и все работает....

но если попытаться написать хотя бы

echo $setting['limit']; - все тоже плохо

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


@Raensul еще могли забыть вывести в макете 

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

24 минуты назад, ibond сказал:

Туда setting от модуля приходит?

подскажите, плз, как посмотреть?

var_dump($setting_info);

тоже приводит к прекращению работы сайта...

 

 

@ArtemPitov в макете выведено. модуль ведь отображается как надо если не использовать $setting. Сайт перестает работать только при попытке обращения к этому массиву.

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


так стоп, вы в админке хотите достучатся до  $setting ? 

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

Ну тогда покажите контролеры 

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

3 минуты назад, ArtemPitov сказал:

Ну тогда покажите контролеры 

Спойлер

<?php
class ControllerModuleCats extends Controller {
	public function index($setting) {
        $this->load->language('module/cats');
        $this->document->addStyle('catalog/view/theme/default/stylesheet/cats.css');
        $this->load->model('tool/image');

		$data['heading_title'] = $this->language->get('heading_title');

		if (isset($this->request->get['path'])) {
			$parts = explode('_', (string)$this->request->get['path']);
		} else {
			$parts = array();
		}

		if (isset($parts[0])) {
			$data['category_id'] = $parts[0];
		} else {
			$data['category_id'] = 0;
		}

		if (isset($parts[1])) {
			$data['child_id'] = $parts[1];
		} else {
			$data['child_id'] = 0;
		}

		$this->load->model('catalog/category');

		$this->load->model('catalog/cats');

		$this->load->model('catalog/product');

		$data['categories'] = array();

		$categories = $this->model_catalog_cats->getHomeCategories(0);

		foreach ($categories as $category) {
			$filter_data = array(
				'filter_category_id'  => $category['category_id'],
				'filter_sub_category' => true
			);
            $category_info = $this->model_catalog_category->getCategory($category['category_id']);

			$data['categories'][] = array(
				'category_id' => $category['category_id'],
				'name'        => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
				'href'        => $this->url->link('product/category', 'path=' . $category['category_id']),
                'icon'        => $category['keyword'],
                'image'       => $this->model_tool_image->resize($category_info['image'],$this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height'))

			);


		}

		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/cats.tpl')) {
			return $this->load->view($this->config->get('config_template') . '/template/module/cats.tpl', $data);
		} else {
			return $this->load->view('default/template/module/cats.tpl', $data);
		}
	}
}

 

 

 

Спойлер

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

	public function index() {
		$this->load->language('module/cats');

		$this->document->setTitle($this->language->get('heading_title'));

		$this->load->model('setting/setting');

        $this->load->model('extension/module');

		if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
            if (!isset($this->request->get['module_id'])) {
                $this->model_extension_module->addModule('cats', $this->request->post);
            } else {
                $this->model_extension_module->editModule($this->request->get['module_id'], $this->request->post);
            }
            
			$this->session->data['success'] = $this->language->get('text_success');

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

		$data['heading_title'] = $this->language->get('heading_title');

		$data['text_edit'] = $this->language->get('text_edit');
		$data['text_enabled'] = $this->language->get('text_enabled');
		$data['text_disabled'] = $this->language->get('text_disabled');

		$data['entry_status'] = $this->language->get('entry_status');

		$data['button_save'] = $this->language->get('button_save');
		$data['button_cancel'] = $this->language->get('button_cancel');
		$data['entry_name'] = $this->language->get('entry_name');
		$data['entry_limit'] = $this->language->get('entry_limit');

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

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

		$data['breadcrumbs'] = array();

		$data['breadcrumbs'][] = array(
			'text' => $this->language->get('text_home'),
			'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], 'SSL')
		);

		$data['breadcrumbs'][] = array(
			'text' => $this->language->get('text_module'),
			'href' => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL')
		);

		$data['breadcrumbs'][] = array(
			'text' => $this->language->get('heading_title'),
			'href' => $this->url->link('module/cats', 'token=' . $this->session->data['token'], 'SSL')
		);
//
        if (!isset($this->request->get['module_id'])) {
            $data['action'] = $this->url->link('module/cats', 'token=' . $this->session->data['token'], 'SSL');
        } else {
            $data['action'] = $this->url->link('module/cats', 'token=' . $this->session->data['token'] . '&module_id=' . $this->request->get['module_id'], 'SSL');
        }

		$data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL');
//
        if (isset($this->request->get['module_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) {
            $module_info = $this->model_extension_module->getModule($this->request->get['module_id']);
        }
//
        if (isset($this->request->post['name'])) {
            $data['name'] = $this->request->post['name'];
        } elseif (!empty($module_info)) {
            $data['name'] = $module_info['name'];
        } else {
            $data['name'] = '';
        }
//
        if (isset($this->request->post['limit'])) {
            $data['limit'] = $this->request->post['limit'];
        } elseif (!empty($module_info)) {
            $data['limit'] = $module_info['limit'];
        } else {
            $data['limit'] = 5;
        }
//
        if (isset($this->request->post['status'])) {
            $data['status'] = $this->request->post['status'];
        } elseif (!empty($module_info)) {
            $data['status'] = $module_info['status'];
        } else {
            $data['status'] = '';
        }

		$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('module/cats.tpl', $data));
	}

	protected function validate() {
		if (!$this->user->hasPermission('modify', 'module/cats')) {
			$this->error['warning'] = $this->language->get('error_permission');
		}
//
        if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 64)) {
            $this->error['name'] = $this->language->get('error_name');
        }

		return !$this->error;
	}
}

 

 

 

 

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


@Raensul ошибка какая  валится ? 

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

34 минуты назад, Raensul сказал:

подскажите, плз, как посмотреть?


var_dump($setting_info);

тоже приводит к прекращению работы сайта...

не должно давать 500ую, попробуйте

print_r($setting_info);

или в лог записать
$this->log->write(print_r($setting_info, true));

 

также в начале контролера можно включить вывод ошибок:

ini_set("display_errors",1);
error_reporting(E_ALL);

 

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

проблема в том, что ошибку пых не выдает, страница ложится с ошибкой:

НЕТ СВЯЗИ С САЙТОМ

ERR_CONTENT_DECODING_FAILED

Если бы пых выдал ошибку - хотя бы понятно было, откуда ноги растут...

а может я не правильно этот массив использовать пытаюсь?

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


Уровень GZIP сжатия: 0 в настройках магазина 

 

 

  • +1 2
Надіслати
Поділитися на інших сайтах

6 минут назад, ibond сказал:

print_r($setting_info);

то же самое...

 

9 минут назад, ibond сказал:

также в начале контролера можно включить вывод ошибок:

ini_set("display_errors",1);
error_reporting(E_ALL);

включал тоже...

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


3 минуты назад, ArtemPitov сказал:

Уровень GZIP сжатия: 0 в настройках магазина 

 

 

спасибо, это помогло.

можете подсказать, в чем была проблема?

там не так много данных для сжатия было... или дело в самом архиваторе?

и как избежать этого для магазинов, где включено сжатие?

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


9 минут назад, Raensul сказал:

можете подсказать, в чем была проблема?

Заголовки ушли что контент кодируется а он не кодируется.

добавьте в php.ini zlib.output_compression = On и включите сжатия на сайте, попробуйте отработает или нет 

  • +1 2
Надіслати
Поділитися на інших сайтах

@ArtemPitov это тоже сработало, спасибо.

 

4 минуты назад, ArtemPitov сказал:

Заголовки ушли что контент кодируется а он не кодируется.

это можно исправить в контроллере, чтобы не трогать php.ini?

 

или все же тут вопрос в правильном использовании $setting в контроллере?

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


Цитата

это можно исправить в контроллере, чтобы не трогать php.ini?

У вас попросту сжатия выключено, правильнее всего его там править http://php.net/manual/ru/zlib.configuration.php 

  • +1 3
Надіслати
Поділитися на інших сайтах

6 минут назад, ArtemPitov сказал:

У вас попросту сжатия выключено, правильнее всего его там править http://php.net/manual/ru/zlib.configuration.php 

Спасибо.

это локальный сервер.

на хостинге, наверное, я бы и не заметил, т.к. там обычно включено.

всем спасибо за пополнение копилки в голове!

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


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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