1. PHP / Говнокод #16795

    +157

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    // экшен произвольного контроллера, они там все такие
    
    $data['heading_title'] = $this->language->get('heading_title');
    
    $data['text_my_account'] = $this->language->get('text_my_account');
    $data['text_my_orders'] = $this->language->get('text_my_orders');
    $data['text_my_newsletter'] = $this->language->get('text_my_newsletter');
    $data['text_edit'] = $this->language->get('text_edit');
    $data['text_password'] = $this->language->get('text_password');
    
    // еще 20-30 аналогичных строчек
    
    $data['column_left'] = $this->load->controller('common/column_left');
    $data['column_right'] = $this->load->controller('common/column_right');
    $data['content_top'] = $this->load->controller('common/content_top');
    $data['content_bottom'] = $this->load->controller('common/content_bottom');
    $data['footer'] = $this->load->controller('common/footer');
    $data['header'] = $this->load->controller('common/header');
    
    if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/account/account.tpl')) {
    	$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/account/account.tpl', $data));
    } else {
    	$this->response->setOutput($this->load->view('default/template/account/account.tpl', $data));
    }

    теги: Опенкарт, вчера релизнули, модный паттерн MVC-L, тонкие контроллеры, классика, табы для того и сделаны, чтобы ими отбивать

    https://github.com/opencart/opencart/tree/master/upload/catalog/controller/account

    Запостил: Fike, 03 Октября 2014

    Комментарии (8) RSS

    • что именно значит "-L" в "MVC-L"?
      Ответить
      • L - Language (Язык)

        OpenCart расширяет понятие MVC до MVCL, обеспечивая простой способ разделения языковой информации. Языковые файлы можно использовать для хранения любого текста, например, заголовков, названий, кнопок и т.д. Таким образом, для того, чтобы перевести ваш магазин, вам нужно внести изменения в файл соответствующего языка.


        Больше нигде, кроме контекста OpenCart, не встречается. Интернационализация представления, только и всего. А я-то надеялся, что это что-то крутое...
        Ответить
      • Что добрую половину контроллера будет занимать переброска интернационализации из одной переменной в другой, а вторая будет заниматься поиском файлов, работой с сессией и выставлением параноидального GET-токена, без которого опенкарт никуда не пустит.
        Ответить
    • OpenCart весь такой насквозь. Ощущение, что афтар один раз прочитал про MVC, понял это описание предельно буквально и зацементировался на этм уровне знаний. С наследованием беда, dependency injection кагбе есть, но используется далеко не в полную силу. Формально MVC соблюдается, но толку от него довольно мало. Для OpenCart есть масса модулей, но тот факт, что устанавливаются они тупо патчингом кода, говорит сам за себя.
      Ответить
      • Кстати, да. Недавно писал маленький модуль - чуть весь мозг не поломал, всё думал как же не трогая файлов самой системы впихнуть весь функционал. Душераздирающее зрелище.
        Ответить
        • У меня висит подключенная консолька симфони, которая по dev:merge сливает папку public, где установлен опенкарт (устанавливается через композер, в репе не хранится, так что все безопасно), с src/injection, прокидывая симлинки на файлы.
          Смекалочка!
          Ответить

    Добавить комментарий