Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Samouchitel_po_razrabotke_rasshireny_dlya_Jooml....docx
Скачиваний:
3
Добавлен:
10.11.2018
Размер:
2.53 Mб
Скачать

Удаление записей

Добавление функциональности удаления сравнительно проще. Добавьте еще один переключатель в switch() в файле admin.reviews.php

case 'remove':

removeReviews( $option );

break;

Кроме того, добавьте функцию removeReviews():

function removeReviews( $option )

{

global $mainframe;

$cid = JRequest::getVar( 'cid', array(), '', 'array' );

$db =& JFactory::getDBO();

if(count($cid))

{

$cids = implode( ',', $cid );

$query = "DELETE FROM #__reviews WHERE id IN ( $cids )";

$db->setQuery( $query );

if (!$db->query())

{

echo "<script> alert('".$db->getErrorMsg()."');

window.history.go(-1); </script>\n";

}

}

$mainframe->redirect( 'index.php?option=' . $option );

}

Мы снова получаем переменную формы cid и проверяем, есть ли id в этом массиве. Если есть, мы создаем строку, разделяющую отдельные id запятыми чтобы затем использовать эту строку в запросе удаления записи БД. Если есть ошибки при выполнении запроса, мы перенаправляем пользователя обратно на экран со списком

Резюме

Теперь у нас есть полностью функциональный ИА для ввода Обзоров ресторанов в. Мы избежали написания рутинного SQL-кода путем расширения класса JTable. Также создан класс HTML генераций, который позволяет создавать экраны добавления, редактирования и списка записей для ИА. Эти экраны используют фоновый JavaScript для взаимодействия с ПИ.

Созданы функции для обработки сохранения, редактирования и удаления записей. Они вызываются путем переключения на задачу с помощью переменной task. Теперь можно заставить кого-то вводить данные в то время как мы будем строить остальные Компоненты

Разработка ип

Мы добавили некоторые данные в ИА и их не терпится увидеть как они понравятся нашим посетителей. Хотя мы все еще работаем в ИА, мы научимся делать следующее:

  • Листинг Обзоров

  • Генерация оптимизированныйх для поисковиков ссылок

  • Выодить Обзор

  • Добавлять комментарии

  • Выводить комментарии

Листинг Обзоров

В главе 2 (см. в разделе Выполнение Компонента), когда мы переходили по ссылке http://localhost/joomla/index.php?option=com_reviews получали такой экран:

Давайте заполним этот экран списком со ссылками, вызывающими отдельные Обзоры, что у нас были добавлены в БД. К тому же посетители должны иметь возможность перемещаться по Обзорам.

Зайдите в папку /components/com_reviews и добавьте следующий код в файл reviews.php:

jimport('joomla.application.helper');

require_once( JApplicationHelper::getPath( 'html' ) );

JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.

'components'.DS.$option.DS.'tables');

switch($task)

{

default:

showPublishedReviews($option);

break;

}

function showPublishedReviews($option)

{

$db =& JFactory::getDBO();

$query = "SELECT * FROM #__reviews WHERE

published = '1' ORDER BY review_date DESC";

$db->setQuery( $query );

$rows = $db->loadObjectList();

if ($db->getErrorNum())

{

echo $db->stderr();

return false;

}

HTML_reviews::showReviews($rows, $option);

}

Аналогично ИА, код require_once(JApplicationHelper:: getPath ('HTML')); включен в файл reviews.html.php.

В строке JPATH_ADMINISTRATOR.DS.'components'.DS.$option.DS.'tables' мы подключаем класс Jtable::addIncludePath();, что мы писали для ИА в предыдущей главе. Наконец, switch() определена для случая по умолчанию - вызывает функцию для отображения всех опубликованных Обзоров. Запрос в этой функции гарантирует, что будут загружены только опубликованные Обзоры в обратном хронологическом порядке.

Перед тем как перезагрузить страницу, мы должны добавить HTML_reviews класс для ИП. В папке /components/com_reviews, создайте файл reviews.html.php:

<?php

class HTML_reviews

{

function showReviews($rows, $option)

{

?><table><?php

foreach($rows as $row)

{

$link = 'index.php?option=' .

$option . '&id=' . $row->id . '&task=view';

echo

'<tr>

<td>

<a href="' . $link . '">' . $row->name . '</a>

</td>

</tr>';

}

?></table><?php

}

}

?>

Предыдущий код начинается с определения класса HTML_reviews. Все наши функции вывода в ИП будут заключены в нем. Функция ShowReviews() принимает массив строк БД и имя текущего Компонента. Функция проходит по результатам и добавляет ссылку для каждой строки.

Сохраните все ваши файлы и обновите браузер. Теперь вы должны увидеть список всех:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]