Комментарии

Компоновка экрана с благодарностями за подписку
( 0 Голосов )

На последней стадии выполнения задачи подписки пользователю выдается сообщение об успешном завершении этой задачи. И делается это на компонуемом экране с благодарностями за подписку.

Напомним, что в методе subscribe () из класса контроллера устанавливается переадресация по следующему URL:

$this->setRedirect (JRoute: :_(' index.php?option=com_joomprosubs &view=form&layout=thankyou&sub_id='.$id, false));

Если задача подписки завершится неудачно, то из этого URL исключается идентификационный номер подписки sub_id. При выполнении этой переадресации начинается новый цикл исполнения, в котором загружается представление с файлом компоновки views/form/tmpl/thankyou.php. Ниже приведено содержимое этого файла.

/**
* @package Joomla.Site
* @subpackage com_joomprosubs
* @copyright Copyright (C) 2013. All frights reserved.
* license GNU General Public License version 2 or later; see LICENSE.txt
 */
// прямой доступ отсутствует
defined (' JEXEC) or die;
$id = (int) $this->itern->id;
$name = $this->escape(JFactory::getUser()->get('name'));
$title = $this->escape($this->itera->title);
$duration = (int) $this->item->duration;
$itemid = JRequest::getlnt('Itemid');

В этом коде компоновки на экран вместе с именем пользователя выводится сообщение, уведомляющее об удачном или неудачном завершении задачи подписки. В качестве примера приведен экран после успешного выполнения задачи подписки.

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

Например, в методе subscribe () из контроллера подписки имеется следующий фрагмент кода:

// установить переадресацию без идентификатора на случай ошибки
$this->setRedirect(JRoute::_('index.php?option=com_joomprosubs&view=form&layout=thankyou', false));
if (!in_array($subscription->group_id, $user->groups)) {
if (!JUserHelper:raddUserToGroup($user->id, ^$subscription->group_id)) {
$this->setMessage($model->getError() , 'error'); return false;

Если ввести в него следующую строку кода: return false; после вызова метода setRedirect (), то данный метод будет всегда возвращать логическое значение false, а следовательно, переход к компоновке экрана с благодарностями за подписку должен осуществляться без идентификатора подписки. (Не забудьте только удалить приведенную выше строку кода по завершении проверки!)


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


 
Похожие новости