Представление и форма редактирования |
Далее в рассматриваемом здесь процессе редактирования подписок наступает стадия, на которой выполняется метод */ В этом фрагменте кода объявляются поля данного класса и начальная часть метода display (). Сначала в этом методе выполняются стандартные служебные операции, а затем из модели получаются элемент и форма. Эта модель определяется в классе JoomproSubsModelForm, расширяя модель из класса JoomproSubsModelSubscription, относящегося к административной части рассматриваемого здесь компонента. В классе модели из административной части имеется метод getForm (), наследующий методы getState () и getltem(). Когда этот метод вызывается из класса в пользовательской части, метод getForm() загружает файл subscription.xml из папки components/com_joomprosubs/models/forms, но не из папки administrator/components. Дело в том, что для указания пути к данному компоненту используется константа JPATH_ COMPONENT, которая имеет разное значение в пользовательской и административной частях веб-сайта. Ниже приведено содержимое XML-файла models/forms/subscription.xml для разметки формы редактирования. В этом файле размечается одно поле формы, которое представляет собой флажок subscription_terms, определяющий условия подписки. Вернемся, однако, к классу представления JoomproSubsViewForm из файла views/form/view.html.php. Ниже приведена остальная часть исходного кода из метода display (). $authorised = $user->authorise('core.edit', 'com_joomprosubs.category.' b. $item->catid); if ($authorised !== true) { JError::raiseError(403, JText::_('JERROR_ALERTNOAUTHOR')); return false; } $this->form->bind($item); В приведенном выше фрагменте кода проверяются полномочия пользователя на редактирование категории, хотя в данном случае это не строго обязательно. Ведь мы уже проверили эти полномочия в методе edit () из класса рассматриваемого здесь контроллера. Тем не менее вводить такую проверку рекомендуется и в представление. Это дает возможность лишний раз убедиться в том, что у пользователя имеются подходящие полномочия, если данный метод используется в другом контексте. Далее вызывается метод bind() и проверяются ошибки. Затем экранируется добавляемый суффикс класса страницы, чтобы исключить внесение любого злонамеренного кода. После этого данные сохраняются в полях params, user и item, чтобы ими можно было воспользоваться в файлах компоновки. И наконец, вызывается метод _ prepareDocument () и далее метод отображения из родительского класса для обращения к файлам компоновки. Метод _prepareDocument () также относится к рассматриваемому здесь классу. Ниже приведен его исходный код. protected function _prepareDocument() { $арр = JFactory:-.getApplication () ; $menus = $app->getMenu(); $pathway = $app->getPathway() ; $title = null; В этом методе устанавливаются заголовок документа на странице, заглавие страницы, описание, а также ключевые слова и роботы. Этот метод мало чем отличается от аналогичных методов из других представлений. Но в то же время данное обстоятельство явно указывает на необходимость исключить дублирование кода, если такой же метод создан и вызывается из родительского класса.
Понравился материал? Пригодилась информация? Плюсани в социалки!
Теги:
|
Похожие новости | |
|
|