Комментарии

Методы контроллера для редактирования подписки
( 0 Голосов )

Как пояснялось ранее, выполнение задачи редактирования подписки (susbscription. edit) приводит к вызову метода edit () из класса JoomproSubsControllerSubscript ion, объявляемого в файле controllers/subscription.php. Поэтому если щелкнуть на упомянутой выше ссылке, начнется выполнение этого метода. Проследим логику представления подписки, начиная с контроллера. Ниже приведена первая часть исходного кода, где объявляется класс данного контроллера.

* @ copyright Copyright (С) 2013. All
frights reserved.
* @ license GNU General Public License version 2 or later; see LICENSE.txt
*/

// прямой доступ отсутствует defined(*_JEXEC) or die;
jimport('joomla.application.component.controllerform'); j import('j oomla.user.helper');
class JoomproSubsControllerSubscription extends JControllerForm {
protected $view_item = 'form';

В этом фрагменте кода импортируются все необходимые классы и создается поле $ vie wit em, используемое далее в объявляемом классе контроллера. А далее определяется метод edit (), вызываемый после щелчка кнопкой мыши на ссылке редактируемой подписки. Код данного метода приведен ниже.

public function edit($key = null, $urlVar = 'sub_id') {
$result = false;
$itemid = JRequest::getlnt('Itemid');
$catid = JRequest:rgetlnt{'catid');
if (($catid) && ($this->allowEdit($catid))) { $result = parent::edit($key, $urlVar);
// зарегистрировать подписку, поскольку она была снята //с регистрации в методе редактирования $this->getModel()->checkln(JRequest:rgetlnt($urlVar)); }
return $result; }

Сначала в этом методе получаются идентификаторы текущего пункта меню и категории из запроса, а затем вызывается метод edit () из родительского класса, если имеется идентификатор категории, а метод allowEdit () возвращает по этому идентификатору логическое значение true, обозначающее разрешение на редактирование. Но поскольку редактируемый элемент снимается в этом методе с регистрации (т.е. блокируется на время редактирования), то он регистрируется снова (т.е. разблокируется) для использования в модели. (Обратите внимание на связывание методов в цепочку для вызова метода checkln () из модели.) Вносить изменения в строку таблицы для данной подписки не нужно, и поэтому вместо сохранения для целей редактирования строка добавляется в таблицу соответствий, как будет показано далее. И наконец, из данного метода возвращается результат, а именно: логическое значение true, если выполнение метода завершилось успешно, в противном случае — логическое значение false.

Следующим на данном этапе обработки в контроллере оказывается метод getRedirectToItemAppend (). Этот метод вызывается из метода edit () родительского класса JCont г oiler Form и служит для присоединения идентификатора текущего пункта меню к запросу из URL в целях переадресации. Этот метод переопределяется в рассматриваемом здесь классе JoomproSubsControllerSubscription, и поэтому в нем выполняется переопределяемый код. Ниже приведен исходный код данного метода.

protected function getRedirectToItemAppend($recordId = null,>$urlVar = null)
{
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
$itemid = JRequest::getInt('Itemid');
if ($itemld) {
$append .= '&Itemid='.$itemld;
}
return $append; }

Сначала в этом методе вызывается одноименный метод из родительского класса, а затем идентификатор текущего пункта меню (Itemid) присоединяется к запросу из URL и, наконец, возвращается результат. Это означает, что тот же самый идентификатор текущего пункта меню сохраняется в переадресации, а следовательно, все модули и шаблоны, назначенные для данного пункта меню, будут отображаться и после переадресации к форме подписки.

Ниже приведен исходный код метода allowEdit () из рассматриваемого здесь класса контроллера.

protected function allowEdit($catid) {
return JFactory::getUser()->authorise('core.edit', ^>$this->option. ' .category. ' .$catid) ; }

В этом методе проверяются лишь полномочия пользователя в системе списков контроля доступа (ACL) на редактирование данной категории подписок.
Далее в рассматриваемом здесь классе контроллера следует метод getModel (). Ниже приведен исходный код этого метода.

public function getModel($name = 'form1, $prefix = '',
^>$config = array('ignore_request' => true))
{
$model = parent::getModel($name, $prefix, $config);
return $model; }

В этом методе лишь указывается имя form используемой модели. Это означает, что полное имя модели будет следующим: JoomproSubsModelForm.

 


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


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