crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Вопросы по основам PHP
Litkevich Yuriy
  опции профиля:
сообщение 26.12.2012, 17:40
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Есть строка в коде:
<?php
class ControllerModuleCategory extends Controller {
    private $error = array();
    
    public function index() {
        $this->model_setting_setting->editSetting('category', $this->request->post); // <------------------
    }
}
?>

1) что такое $this в PHP?
2) что такое model_setting_setting?


---
предположения:
1) указатель/ссылка на объект (экземпляр класса) ControllerModuleCategory;
2) член (поле) класса ControllerModuleCategory, однако я не вижу чтоб его где-то объявили, в базовом тоже не вижу.

как это всё работает?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 26.12.2012, 20:53
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Iron Bug @ 26.12.2012, 22:06) *
член базового класса

Цитата(Litkevich Yuriy @ 26.12.2012, 20:37) *
ни в классе ControllerModuleCategory ни в базовом

Controller

<?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();                
        }
    }
}
?>


ControllerModuleCategory

<?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) Удаляю соответствующие записи в БД руками - захожу в настройки модуля, там опять эти же три строки, лезу сразу в БД - пусто!

Откуда он настройки эти берёт, зараза?


ОФФ:

вчера отладил взаимодействие с Робокассой, отправил им документы на подключение. В новом году буду разные способы оплаты принимать, в том числе и банковские карточки
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


11 чел. читают эту тему (гостей: 11, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.12.2024, 6:06