Комментарии

Исходный контроллер
( 0 Голосов )

Как пояснялось ранее, когда загружается экран диспетчера компонента, первым загружается класс исходного контроллера с выполняемой по умолчанию задачей отображения. В данном случае исходным является контроллер из класса JoomproSubsController. Исходный код этого класса приведен в листинге ниже.

Листинг. Класс JoomproSubsController из файла controller.php

// прямой доступ отсутствует defined('_JEXEC') or die;
/**
* Контроллер Joomprosubs joomprosub
* ©package  Joomla.Administrator
* ©subpackage com_joomprosubs
*/ class JoomproSubsController extends JController { /** @var string Исходное представление @since 2.5 */ protected $default_view = 'submanager';
/**
* Метод для отображения представления. * @param boolean $cachable  Если истина, то вывод из представления кешируется. * ©param array $urlparams  Массив параметров безопасного URL и типов их переменных, а действительные значения см. в {©link JFilterlnput::clean()}. * ©return JController Этот объект поддерживает связывание методов в цепочку. */
function display($cachable = false, $urlparams = false) { JLoader::register('JoomproSubsHelper', JPATH_COMPONENT.'/helpers/joomprosubs.php');
// загрузить подменю JoomproSubsHelper::addSubmenu(JRequest::getCmd('view',    'submanager')); $view = JRequest::getCmd('view', 'submanager'); $layout = JRequest::getCmd('layout', 'default'); $id = JRequest:-.getlnt ('id') ;
// проверить  наличие формы редактирования if ($view == 'subscription' && $layout -- 'edit' && ^!$this->checkEditId('com_joomprosubs.edit.subscription*,   $id))    { //не разрешать  несанкционированный доступ к форме $this->setError(JText::sprintf( ^>'JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_( %index.php?option=com_joomprosubs&view=submanager', false)); return false; } parent::display(); $this; } }

Приведенный выше исходный код класса JoomproSubsController мало чем отличается от исходного кода класса WeblinksController, рассматривавшегося в главе 7. Этот класс расширяет класс JController. Обратите внимание на то, что в нем введено защищенное поле $default_view, в котором установлено значение "submanager". В аналогичном контроллере компонента Weblinks это поле не было определено, но именно в нем указывается имя исходного представления для административной части создаваемого компонента (в данном случае — submanager). Причина, по которой аналогичное поле не было определено для компонента Weblinks, объясняется тем, что в Joomla по умолчанию предоставляется значение, равное имени компонента за вычетом префикса сот_. Для компонента comweblinks это значение получалось равным "weblinks", что совершенно верно. Но в данном случае по умолчанию было бы предоставлено значение "j oomprosubs ", т.е. не то, что нам нужно. Поэтому имя исходного представления специально определяется в поле $defaultview.

У класса JoomproSubsController имеется единственный метод display (), в котором включается вспомогательный файл. Следует заметить, что для этой цели вместо команды require_once вызывается метод JLoader: : register (). Напомним, что этот метод выполняется быстрее и считается более предпочтительным для загрузки класса. Для указания пути к папке компонента (в данном случае — administrator/components/ com_j oomprosubs) служит константа JPATH_COMPONENT, а для обращения к вспомогательному классу вызывается метод addSubmenu ().

Затем из запроса получается представление, компоновка, а также идентификатор подписки. Попутно поверяется, не попытался ли пользователь перейти к форме редактирования непосредственно. И наконец, вызывается метод display () из родительского класса JController, чтобы получить требуемое представление и выполнить его.


Понравился материал? Пригодилась информация? Плюсани в социалки!


Теги:
 
Похожие новости