Комментарии

Задачи, классы и методы контроллеров компонента Weblinks
( 0 Голосов )

Принимая во внимание все сказанное выше, рассмотрим методы из трех контроллеров компонента Weblinks и порядок их сопоставления с задачами этого компонента. Как было показано ранее, в классе WeblinksController из файла controller.php содержится метод display (), выполняющий выбираемую по умолчанию задачу отображения. Это единственная задача, которую выполняет контроллер из данного класса, и только он вообще что-то отображает.

Класс WeblinksControllerWeblinks управляет экраном Weblinks Manager. Он расширяет класс JControllerAdmin, который, в свою очередь, расширяет класс JController. Как пояснялось ранее, в самом классе WeblinksControllerWeblinks содержится единственный метод getModel (). И хотя этот метод открытый, он не включается в массив taskMap, поскольку также находится в классе JController, методы которого исключаются из массива taskMap. В связи с тем что класс JControllerAdmin расширяет класс JController, методы, включаемые в массив taskMap, являются открытыми методами из класса JControllerAdmin, отсутствующими в классе JController.

Представлен моментальный снимок экрана из представления Eclipse Туре Hierarchy (Иерархия типов в интегрированной среде разработки Eclipse), отображающего наследование класса WeblinksControllerWeblinks от класса JControllerAdmin и методы последнего.

Как видите, открытые методы, обозначенные кружком, используются для выполнения задач. Как пояснялось ранее, в конструкторе класса некоторые дополнительные задачи сопоставляются с методами publish () и saveorder (). Мелкий треугольник слева от метода display () обозначает, что он переопределяет метод отображения из родительского класса. Метод display () вводится в массив taskMap явным образом, хотя он и присутствует в классе JController. Но метод display () из класса JControllerAdmin просто возвращает логическое значение false и больше ничего не делает.

Для третьего контроллера имеется класс WeblinksControllerWeblink из файла controllers/weblink.php. Обратите внимание на то, что в третьей части его имени слово Weblink употребляется в единственном числе. Этот класс управляет экранной формой ввода и редактирования одиночных веб-ссылок. Такие условные обозначения экранных форм диспетчеров компонентов во множественном числе и форм редактирования одиночных элементов в единственном числе приняты во всех базовых компонентах Joomla, хотя их совсем не обязательно соблюдать, как будет показано далее в статьях нашего сайта при построении собственного компонента.

Сам класс WeblinksControllerWeblink содержит лишь два закрытых метода. А методы, сопоставляемые в массиве taskMap, происходят из его родительского класса JControllerForm.

В массив taskMap вводятся следующие открытые методы из класса JControllerForm: add (), cancel (), edit (), а также save (). А в конструкторе этого класса можно обнаружить приведенные ниже строки кода.

$this->registerTask('apply', 'save'); $this->registerTask('save2new', 'save'); $this->registerTask('save2copy', 'save');

В этих строках кода задачи применения (apply), сохранения и создания (save2new), а также сохранения в виде копии (save2сору) сопоставляются с методом save ().

А теперь подведем краткий итог всем задачам, которые может выполнять пользователь в административной части веб-сайта над компонентом Weblinks. Приведены все пиктограммы на панели инструментов экрана Weblinks Manager: Weblinks, где перечисляются все веб-ссылки, и соответствующие им задачи, а пиктограммы на панели инструментов экрана Weblinks Manager: Weblink, где вводятся и редактируются одиночные веб-ссылки, и соответствующие им задачи.

Благодаря этим сведениям можно точно узнать, где именно выполняется каждая задача. Так, если требуется добавить новую задачу, ее можно сопоставить с методом контроллера, уже имеющимся в конструкторе класса, а затем ввести логику в сопоставленный с ней метод или же добавить в класс контроллера новый метод, имя которого совпадает с названием новой задачи. А если потребуется добавить новую экранную форму управления компонентом, то для этой формы можно ввести новый контроллер с его собственными задачами и соответствующими методами.


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


 
Похожие новости
Добавить комментарий


Защитный код