Читаем Разрботка расширений для CMS Joomla полностью

Переменной $row присваивается значение экземпляра класса TableQuestion и вызывается функция bind для связывания переменных, полученных из формы, с полями этого класса.

Для тех значений, которые вводились с помощью редактора Joomla, стандартный способ получения значений из массива JRequest::get('post') не подходит, т.к. функция bind автоматически удаляет HTML-код, что приведет, в частности, к потере разрывов строк и тегов абзаца. Поэтому для получения значений question и answer в том виде, в котором они были введены в редакторе, используется функция getVar класса JRequest. Данной функции передается имя переменной формы, значение по умолчанию, метод запроса, с помощью которого мы хотим получить данные (get/post), ожидаемый формат и флаг JREQUEST_ALLOWRAW, означающий, что данные не должны быть отфильтрованы.

Наконец, вызывается функция store для сохранения вопроса в базе данных.

В функции saveQuestion происходит вызов функции save, а затем в зависимости от задачи, т.е. от того, какая кнопка была нажата, - " Сохранить" или "

Сохранить и закрыть", - мы перенаправляем пользователя либо к той же странице редактирования вопроса, на которой он находится, но уже с сохраненными данными, либо к главной странице нашего компонента. В обоих случаях выводится сообщение о том, что данные были сохранены. Для перенаправления и вывода сообщения используется функция redirect глобального объекта JApplication.

Добавьте задачу сохранения записи в переключатель switch в файле admin.myquestions.php(выделенный код):

Добавьте перевод для ключа COM_MYQUESTIONS_REPLY_SAVED в файл /administrator/language/ru-RU/ru-RU.com_myquestions.ini:

COM_MYQUESTIONS_REPLY_SAVED="Данные сохранены"

Сохраните все ваши файлы и перейдите по ссылке ссылка: http://localhost/joomla/administrator/index.php?option=com_myquestions&task=reply&cid[]=1. Напишите что-нибудь в поле для ответа и нажмите кнопку " Сохранить и закрыть". Вы должны увидеть следующую страницу (рис. 2.2).

(есть увеличенное изображение)


Рис. 2.2.  Результат сохранения ответа на вопрос

С помощью phpMyAdmin вы можете проверить, что данные были сохранены в таблице базы данных jos_myquestions (рис. 2.3).

(есть увеличенное изображение)


Рис. 2.3.  Ответ на вопрос сохранен в базе данных

Вывод списка записей

Прежде всего, добавьте в файл admin.myquestions.phpследующую функцию:

function showQuestions($option) { $db =& JFactory::getDbo; $query = "SELECT * FROM #__myquestions"; $db->setQuery($query); $rows = $db->loadObjectList; if ($db->getErrorNum) { echo $db->stderr; return false; } HTML_questions::showQuestions($option, $rows); }

Эта функция загружает все записи из таблицы #__myquestions и передает их в виде массива $rows в следующую функцию, которую необходимо добавить в файл admin.myquestions.html.phpв класс HTML_questions:

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже