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

Отображение Обзора

Если вы нажмете на любую из ссылок на данный момент, вы просто увидите тот же экран. Для того, чтобы ссылки работали добавьте следующую функцию в reviews.php:

function viewReview($option)

{

$id = JRequest::getVar('id', 0);

$row =& JTable::getInstance('review', 'Table');

$row->load($id);

if(!$row->published)

{

JError::raiseError( 404, JText::_( 'Invalid

ID provided' ) );

}

HTML_reviews::showReview($row, $option);

}

Во-первых, мы получаем id из запроса с использованием getVar(), которая проверяет переменную на различные типы атак. Необходимо соблюдать осторожность при работе с внешними данными, особенно с общедоступными веб-сайтами. Постоянное использование getVar() в коде обеспечит разумный уровень безопасности. Если значение для id отсутствует или не подходят, будет использован второй параметр инструкции – по умолчанию 0.

Далее, мы получаем экземпляр класса таблицы с ИА. После загрузки строки с соответствующим id, мы выполняем быструю проверку, что выбранный Обзор опубликован. Если это не так, мы используем JError функцию RaiseError() для вывода 404ошибки: 404 - Page could not be found.

Эта проверка гарантирует, что посетители не вводят случайные id, чтобы вызвать несуществующий Обзор. ViewReview() будет делать все необходимое для загрузки запрошенного Обзора и нам необходимо добавить код для вызова этой функции. Добавьте выделенное в switch() для подключения view:

switch($task)

{

case 'view':

viewReview($option);

break;

default:

showPublishedReviews($option);

break;

Нам также необходимо создать функцию отображения в нашем классе. Добавьте функцию showReview() для HTML_reviews в файле reviews.html.php:

function showReview($row, $option)

{

?>

<p class="contentheading"><?php echo $row->name; ?></p>

<p class="createdate"><?php echo JHTML::Date

($row->review_date); ?></p>

<p><?php echo $row->quicktake; ?></p>

<p><strong>Address:</strong> <?php echo $row->address; ?></p>

<p><strong>Cuisine:</strong> <?php echo $row->cuisine; ?></p>

<p><strong>Average dinner price:</strong> $<?php echo

$row->avg_dinner_price; ?></p>

<p><strong>Credit cards:</strong> <?php echo

$row->credit_cards; ?></p>

<p><strong>Reservations:</strong> <?php echo

$row->reservations; ?></p>

<p><strong>Smoking:</strong> <?php

if($row->smoking == 0)

{

echo "No";

}

else

{

echo "Yes";

}

?></p>

<p><?php echo $row->review; ?></p>

<p><em>Notes:</em> <?php echo $row->notes; ?></p>

<?php $link = 'index.php?option=' . $option ; ?>

<a href="<?php echo $link; ?>">< return to the reviews</a>

<?php

}

Функция ShowReview() принимает одну строку базы данных в качестве объекта и имя Компонента, в качестве параметра. Большинство столбцов строки отображаются просто с помощью HTML-форматирования, большая часть логики уже обработана. Колонка smoking проверяется и преобразуется в Да или Нет. Функция JHTML::Date() форматирует дату, полученную из БД в стиль локали.

Стиль классов contentheading и createdate используются во всех шаблонах Joomla!. Используя их, наши Компоненты вписываются в остальную часть сайта. Наконец, мы выводим список.

Сохраните все файлы, выберите Обзор ссылки и Вы должны увидеть красиво отформатированную страницу.

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