Комментарии

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

При воспроизведении формы на экране ее компоновка выбирается из файла views/subscription/tmpl/edit.php. Этот файл содержит сценарий, а не объявление класса. Ниже приведена первая часть исходного кода из этого файла компоновки.

// прямой доступ отсутствует
defined (' _JEXEC) or die;
JHtml::addlncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
?>

Как и в предыдущих примерах применения класса JForm, в данную компоновку добавляются два вида поведения: всплывающая подсказка и проверка достоверности формы. Затем определяется сценарий JavaScript, в котором будет производиться проверка достоверности формы при ее передаче на обработку. Более подробно эти вопросы рассматриваются в прошлой статье нашего сайта.

Ниже приведена следующая часть исходного кода из рассматриваемого здесь файла компоновки формы ввода и редактирования подписок.

id="subscription-form">
item->id) ? JText::_('COM_JOOMPROSUBS_NEW_JOOMPROSUB') : JText::sprintf('COM_JOOMPROSUBS_EDIT_JOOMPROSUB',   $this->item->id); ?>
  • form->getLabel ('title'); ?>
  • form->getInput('title'); ?>
  • form->getLabel ('alias'); ?> form->getInput('alias');   ?>
  • form->getLabel ('catid'); ?> form->getInput('catid');   ?>
  • form->getLabel ('group_id'); ?> form->getInput('group_id');   ?>
  • form->getLabel ('duration'); ?> form->getInput('duration');   ?>
  • form->getLabel ('published'); ?> form->getInput ('published') ;   ?x/li>
  • form->getLabel ('access'); ?> form->getInput('access');   ?>
  • form->getLabel (' id'); ?> form->getInput('id');?>
form->getLabel('description'); ?>
form->getInput('description'); ?>

В этой части исходного кода из файла компоновки формы ввода и редактирования подписок определяется действие для загрузки формы по тому же самому URL, что и прежде, с идентификатором текущего элемента. Затем метод отправки формы, а также имя, идентификатор и класс определяются в соответствующих атрибутах элемента разметки form. Далее первые семь полей формы, размеченные элементами form в коде HTML, выводятся на экран в виде неупорядоченного списка. И в каждом случае из XML-файла разметки формы извлекается метка поля и выводится на экран. Эти поля отображаются в левой части формы.

И наконец, ниже приведена последняя часть исходного кода из рассматриваемого здесь файла компоновки формы ввода и редактирования подписок.

$this->item->id,   array ('useCookie' =>1));   ?> 'JGLOBAL_FIELDSET_PUBLISHING') , 'publishing-details ') ;   ?>
    form->getLabel (' created_by'); ?> form->getInput('created_by'); ?> form->getLabel ('created_by_alias'); ?> form->getInput ('created_by_alias ') ; ?> form->getLabel ('created'); ?> form->getInput ('created'); ?x/li> form->getLabel('publish_up'); ?> form->getInput('publish_up'); ?> form->getLabel('publish_down'); ?> form->getInput('publish_down');   ?> item->modified_by) : ?> form->getLabel ('modified_by') ; ?> form->getInput(*modified_by'); ?> form->getLabel ('modified') ; ?> form->getInput('modified'); ?>

В этой части исходного кода из файла компоновки формы ввода и редактирования подписок определяется панель со слайдерами для отображения сведений о публикации. Для создания этой панели используются методы JHtmlSliders::start () и JHtmlSliders::panel (). Затем с помощью методов getLabel () и getlnput () на экран выводятся еще семь полей формы для ввода сведений о публикации. Далее создание панели со слайдерами завершается и добавляется скрытое поле с маркером формы. Напомним, что это поле служит для проверки маркера, сохраненного в текущем сеансе работы, чтобы убедиться в достоверности сохраняемой информации.

А теперь рассмотрим XML-файл models/forms/subscription.xml, из которого выбиралась разметка полей рассматриваемой здесь формы. Ниже приведена первая часть этого файла.


В этой части рассматриваемого здесь XML-файла определяются первые семь полей формы ввода и редактирования подписок. В качестве типа для поля идентификатора категории (catid) устанавливается категория (type=" category"), а в качестве расширения указывается имя создаваемого компонента (extension="com_joomprosubs"). Это позволяет сформировать раскрывающийся список из категорий подписок. Аналогичным образом в качестве типа для поля идентификатора группы (groupid) указывается группа пользователей (type="usergroup").

Для поля срока действия подписки (duration) указывается целочисленный (integer) тип и фильтр. Такой тип данного поля позволяет указывать верхний и нижний пределы, а также шаг приращения. В данном случае срок действия подписки начинается с 15 дней и постепенно увеличивается до 90 дней с приращением в 15 дней. А целочисленный фильтр этого поля означает, что даже если злоумышленнику и удастся ввести какие-нибудь другие данные в форму, минуя раскрывающийся список, то эти данные все равно будут преобразованы в целочисленные при сохранении в таблице.

И наконец, для поля описания (description) в качестве типа указан редактор (editor). Это означает, что для редактирования данных в этом поле будет использоваться редактор, выбираемый пользователем по умолчанию. В качестве фильтра для этого поля указывается безопасная разметка (safehtml), чтобы отфильтровать введенные пользователем данные и безопасно воспроизвести их на HTML-странице.

Ниже приведена последняя часть рассматриваемого здесь XML-файла.


JPUBLISHED
JUNPUBLISHED
JTRASHED