Комментарии

Модели компонента Weblinks
( 0 Голосов )

А теперь, когда стал понятнее принцип действия контроллеров, перейдем к рассмотрению моделей компонента Weblinks. Для моделей этого компонента имеются два основных класса: WeblinksModelWeblink из файла models/weblink.php и WeblinksModelWeblinks из файла models/weblinks.php. Эти классы обозначаются таким же образом, как и классы контроллеров. В классе WeblinksModelWeblink предоставляются методы, поддерживающие выполнение контроллерами задач, назначаемых для отдельных элементов веб-ссылок, а в классе WeblinksModelWeblinks — методы для отображения списка веб-ссылок в экранной форме Weblinks Manager: Weblinks.

Рассмотрим сначала, каким образом выполнение контроллерами задач поддерживается в классе WeblinksModelWeblink. Прежде всего необходимо выбрать подходящий класс модели, а для этого нужно знать, каким образом контроллеры связываются с моделями. Напомним, что в классе WeblinksControllerWeblinks переопределяется метод getModelO для загрузки явным образом модели из класса WeblinksModelWeblink. Именно таким образом этот контроллер связывается с данной моделью. А в классе WeblinksControllerWeblink метод getModel () отсутствует, поэтому для получения модели в данном классе используется метод getModelO из его родительского класса JCont roller Form. Ниже приведен исходный код этого метода.

Следующее после слова Controller в имени класса. В данном случае это слово Weblink, поскольку класс называется WeblinksControllerWeblink. Таким образом, при выполнении метода getModel () из родительского класса JController получается первая часть имени модели. Если переменная $prefix пуста, как в данном случае, то используется поле modelpref ix. Это поле устанавливается двумя способами: из элемента массива в аргументе $config или из первой части имени класса.

В данном случае поле model_pref ix не указано в переменной $config, и поэтому используются обычные условные обозначения имен. В конечном итоге получается исходное имя модели, похожее на имя контроллера, только в нем вместо слова Controller присутствует слово Model. Но такие условные обозначения имен можно легко изменить, указав значение поля model_pref ix в переменной $config при получении экземпляра (т.е. создании) модели.

Рассмотрим далее, каким образом в модели поддерживаются задачи, инициируемые контроллерами. Перечислены методы контроллеров, вызываемые для каждой задачи, которую пользователь может выполнять в компоненте Weblinks. В частности, методы add (), edit () и сапсеl () вызываются из класса WeblinksControllerWeblink при загрузке или закрытии экранной формы редактирования веб-ссылки. Аналогичные методы в модели отсутствуют.

В методе add () просто проверяется, разрешено ли пользователю добавлять элемент веб-ссылки. Если это ему разрешено, то устанавливается и производится переадресация для открытия экранной формы редактирования новой веб-ссылки. И все это делается без доступа к методам модели.

В методе add() также проверяются полномочия пользователя. А кроме того, в нем из модели вызываются методы getTable(), checkout () и getError () с целью проверить, не снят ли данный элемент с регистрации, а затем пометить этот элемент как снятый с регистрации, т.е. заблокированный, прежде чем начать сеанс его редактирования. После этого устанавливается и производится переадресация для открытия экранной формы редактирования выбранного элемента.

В методе cancel () из модели вызывается метод check in () для регистрации элемента, после чего производится переадресация обратно к экранной форме Weblinks Manager: Weblinks.

В остальных методах, в том числе publish(), checkin(), delete(), reorder (),save () и save-order (), вызываются соответствующие методы из модели. Приведены методы, доступные в классе WeblinksModelWeblink и наследуемые из класса JModelAdmin. Как и следовало ожидать, в модели присутствуют те же самые шесть открытых методов.


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


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


Защитный код