Цитата(Iron Bug @ 26.12.2012, 22:06)
член базового класса
Цитата(Litkevich Yuriy @ 26.12.2012, 20:37)
ни в классе ControllerModuleCategory ни в базовом
<?php
abstract class Controller {
protected $registry;
protected $id;
protected $layout;
protected $template;
protected $children = array();
protected $data = array();
protected $output;
public function __construct($registry) {
$this->registry = $registry;
}
public function __get($key) {
return $this->registry->get($key);
}
public function __set($key, $value) {
$this->registry->set($key, $value);
}
protected function forward($route, $args = array()) {
return new Action($route, $args);
}
protected function redirect($url, $status = 302) {
header('Status: ' . $status);
header('Location: ' . str_replace('&', '&', $url));
exit();
}
protected function getChild($child, $args = array()) {
$action = new Action($child, $args);
$file = $action->getFile();
$class = $action->getClass();
$method = $action->getMethod();
if (file_exists($file)) {
require_once($file);
$controller = new $class($this->registry);
$controller->$method($args);
return $controller->output;
} else {
trigger_error('Error: Could not load controller ' . $child . '!');
exit();
}
}
protected function render() {
foreach ($this->children as $child) {
$this->data[basename($child)] = $this->getChild($child);
}
if (file_exists(DIR_TEMPLATE . $this->template)) {
extract($this->data);
ob_start();
require(DIR_TEMPLATE . $this->template);
$this->output = ob_get_contents();
ob_end_clean();
return $this->output;
} else {
trigger_error('Error: Could not load template ' . DIR_TEMPLATE . $this->template . '!');
exit();
}
}
}
?>
<?php
class ControllerModuleCategory extends Controller {
private $error = array();
public function index() {
$this->load->language('module/category');
$this->document->setTitle($this->language->get('heading_title'));
$this->load->model('setting/setting');
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
echo "REQUEST_METHOD == POST";
$this->model_setting_setting->editSetting('category', $this->request->post);
$this->session->data['success'] = $this->language->get('text_success');
$this->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'));
}
$this->data['heading_title'] = $this->language->get('heading_title');
$this->data['text_enabled'] = $this->language->get('text_enabled');
$this->data['text_disabled'] = $this->language->get('text_disabled');
$this->data['text_content_top'] = $this->language->get('text_content_top');
$this->data['text_content_bottom'] = $this->language->get('text_content_bottom');
$this->data['text_column_left'] = $this->language->get('text_column_left');
$this->data['text_column_right'] = $this->language->get('text_column_right');
$this->data['entry_layout'] = $this->language->get('entry_layout');
$this->data['entry_position'] = $this->language->get('entry_position');
$this->data['entry_count'] = $this->language->get('entry_count');
$this->data['entry_status'] = $this->language->get('entry_status');
$this->data['entry_sort_order'] = $this->language->get('entry_sort_order');
$this->data['button_save'] = $this->language->get('button_save');
$this->data['button_cancel'] = $this->language->get('button_cancel');
$this->data['button_add_module'] = $this->language->get('button_add_module');
$this->data['button_remove'] = $this->language->get('button_remove');
if (isset($this->error['warning'])) {
$this->data['error_warning'] = $this->error['warning'];
} else {
$this->data['error_warning'] = '';
}
$this->data['breadcrumbs'] = array();
$this->data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'),
'separator' => false
);
$this->data['breadcrumbs'][] = array(
'text' => $this->language->get('text_module'),
'href' => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'),
'separator' => ' :: '
);
$this->data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title'),
'href' => $this->url->link('module/category', 'token=' . $this->session->data['token'], 'SSL'),
'separator' => ' :: '
);
$this->data['action'] = $this->url->link('module/category', 'token=' . $this->session->data['token'], 'SSL');
$this->data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL');
$this->data['modules'] = array();
if (isset($this->request->post['category_module'])) {
echo "POST category_module";
$this->data['modules'] = $this->request->post['category_module'];
} elseif ($this->config->get('category_module')) {
echo "CONFIG category_module";
$this->data['modules'] = $this->config->get('category_module');
}else{
echo "EMPTY information_module";
}
$this->load->model('design/layout');
$this->data['layouts'] = $this->model_design_layout->getLayouts();
$this->template = 'module/category.tpl';
$this->children = array(
'common/header',
'common/footer'
);
$this->response->setOutput($this->render());
}
private function validate() {
if (!$this->user->hasPermission('modify', 'module/category')) {
$this->error['warning'] = $this->language->get('error_permission');
}
if (!$this->error) {
return true;
} else {
return false;
}
}
}
?>
echo - я уже натолкал, т.к. не представляю, как отлаживатся в PHP.
Цитата(Iron Bug @ 26.12.2012, 22:06)
а в чём заключается глюк в магазине?
В админке есть настройки размещения "модулей" на витрине (где какой блок находится), для модуля "категория" выглядит так:
это единственный модуль, который глючит.
1) я могу поменять здесь что угодно, хоть все строчки (страницы магазина) удалить. Но ничего не сохраняется. В других модулях всё нормально сохраняется, проверял, в БД данные не обновляются.
Мало того, Рсположение "Правая колонка" я поменял вчера (экспериментируя с компоновкой) до этого было "Левая колонка".
2) Удаляю соответствующие записи в БД руками - захожу в настройки модуля, там опять эти же три строки, лезу сразу в БД - пусто!
Откуда он настройки эти берёт, зараза?
ОФФ:
вчера отладил взаимодействие с Робокассой, отправил им документы на подключение. В новом году буду разные способы оплаты принимать, в том числе и банковские карточки