И так что такое контроллер и с чем его едят?
В CS-Cart контроллер является основой для навигации, коллекции информации и презентации этой информации. Пока не сильно понятно что такое контроллер?
Например домашняя страница управляется с помощью index контроллера. Это специальный контроллер и он никак не обрабатывается, хотя может, как и любой другой контроллер. Всё что связано с продуктами обрабатывается с помощью product контроллера. На самом деле по названию контроллера можно понять за что он отвечает. Также контроллеры работают на разные области сайта: администраторскую панель и клиентскую часть (фронт-энд).
Контроллеры работающие в админке находятся в папке:
Контроллеры работающие в фронт-энде находятся в папке:
Каждый контроллер имеет свои свойства, которые мы передаём при помощи ссылки, а именно параметра dispatch в ссылке.
Например ссылка:
вызовет контроллер под названием pages, который находится здесь:
По поводу свойств. Свойства передаются контроллеру с помощью специального разделителя "." (точки). Приведём пример. Ссылка
вызывет контроллер pages с такими свойствами:
Иногда удобнее просто использовать $_REQUEST массив. Живой пример:
Отобразит страницу, где page_id равен 5.
И так давайте теперь заглянем в простой контроллер, например pages во фронт-энде.
Открываем
/controllers/customer/pages.php
Дальше задаем meta информацию для страницы, название страницы и breadcrumbs.
С помощью переменной $view задаем отображением. Тем кто знаком со Smarty будет все понятно. Автор статьи утверждает что лучше использовать Registry::get('view')->, нежели $view, т.к. $view не всегда доступен.
Дальше CS-Cart будет искать нужный нам шаблон (.tpl файл). Он называется также как и $mode.
Например если вы используете тему Super и заходите на страницу:
то CS-Cart использует .tpl файл:
Если этот файл не будет найден, будет вызвана страница 404.
Какие выводы можно сделать в конце статьи?
С помощью ссылки мы указываем какому контроллеру сработать и как этот контроллер будет себя вести.
$mode важен тем, что он называется также как и .tpl файл.
Конец первой части.
Оригинал статьи можно найти здесь.
В CS-Cart контроллер является основой для навигации, коллекции информации и презентации этой информации. Пока не сильно понятно что такое контроллер?
Например домашняя страница управляется с помощью index контроллера. Это специальный контроллер и он никак не обрабатывается, хотя может, как и любой другой контроллер. Всё что связано с продуктами обрабатывается с помощью product контроллера. На самом деле по названию контроллера можно понять за что он отвечает. Также контроллеры работают на разные области сайта: администраторскую панель и клиентскую часть (фронт-энд).
Контроллеры работающие в админке находятся в папке:
/controllers/admin
Контроллеры работающие в фронт-энде находятся в папке:
/controllers/customer
Каждый контроллер имеет свои свойства, которые мы передаём при помощи ссылки, а именно параметра dispatch в ссылке.
Например ссылка:
http://example.com/index.php?dispatch=pages
вызовет контроллер под названием pages, который находится здесь:
/controllers/customer/pages.php
По поводу свойств. Свойства передаются контроллеру с помощью специального разделителя "." (точки). Приведём пример. Ссылка
http://example.com/index.php?dispatch=pages.view.xml.5
вызывет контроллер pages с такими свойствами:
$mode == 'view'; $action == 'xml'; $dispatch_extra == '5';
Иногда удобнее просто использовать $_REQUEST массив. Живой пример:
http://example.com/index.php?dispatch=pages.view&page_id=5
Отобразит страницу, где page_id равен 5.
И так давайте теперь заглянем в простой контроллер, например pages во фронт-энде.
Открываем
/controllers/customer/pages.php
if ($mode == 'view') {Проверяем какой $mode задан. Как вы видите в данном контроллере это единственный вариант $mode.
$_REQUEST['page_id'] = empty($_REQUEST['page_id']) ? 0 : $_REQUEST['page_id'];Просто удостоверимся что $_REQUEST['page_id'] задан.
$preview = ($auth['area'] == 'A' && !empty($_REQUEST['action']) && $_REQUEST['action'] == 'preview') ? true : false;Эта проверка сделана для того, чтобы мы могли просматривать отключенные в админке страницы.
$page = fn_get_page_data($_REQUEST['page_id'], CART_LANGUAGE, $preview);Записываем в переменную $page данные о странице. Константа CART_LANGUAGE содержит в себе язык, на котором просматривается страница.
if (empty($page) || ($page['status'] == 'D' && !$preview)) { return array(CONTROLLER_STATUS_NO_PAGE); }Если страница отключена то вызываем 404 страницу. Контроллеру всегда нужно возвращать статус, но мы поговорим об этом попозже.
Дальше задаем meta информацию для страницы, название страницы и breadcrumbs.
С помощью переменной $view задаем отображением. Тем кто знаком со Smarty будет все понятно. Автор статьи утверждает что лучше использовать Registry::get('view')->, нежели $view, т.к. $view не всегда доступен.
Дальше CS-Cart будет искать нужный нам шаблон (.tpl файл). Он называется также как и $mode.
Например если вы используете тему Super и заходите на страницу:
http://example.com/index.php?dispatch=pages.view&page_id=5
то CS-Cart использует .tpl файл:
/skins/super/customer/views/pages/view.tpl
Если этот файл не будет найден, будет вызвана страница 404.
Какие выводы можно сделать в конце статьи?
С помощью ссылки мы указываем какому контроллеру сработать и как этот контроллер будет себя вести.
$mode важен тем, что он называется также как и .tpl файл.
Конец первой части.
Оригинал статьи можно найти здесь.
Комментариев нет:
Отправить комментарий