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

Редактирование записей

Вместо того чтобы писать целый набор новых функций для редактирования записей, мы можем дополнить существующий код. В admin.reviews.php файл под editReview() замените:

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

на такой выделенный код:

function editReview( $option )

{

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

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

$id = $cid[0];

$row->load($id);

Также как с функцией saveReview(), мы получаем объект TableReview для обработки данных записи. В переменную cid получаем массив id строк таблицы. Так как мы хотим изменить только одну запись за раз, мы выбираем первый id в массиве и загружаем соответствующую строку. А в файл admin.reviews.php, мы должны добавить переход для редактирования в switch():

case 'edit':

case 'add':

editReview( $option );

break;

Вам необходимо создать ссылки, чтобы пользователь мог редактировать отдельные записи.

В файле admin.reviews.html.php после HTML_reviews::showReviews(), вместо функции для отображения имени добавьте пару строк выделенного кода, как показано ниже

jimport('joomla.filter.output');

$k = 0;

for ($i=0, $n=count( $rows ); $i < $n; $i++)

{

$row = &$rows[$i];

$checked = JHTML::_('grid.id', $i, $row->id );

$published = JHTML::_('grid.published', $row, $i );

$link = JOutputFilter::ampReplace( 'index.php?option=' .

$option . '&task=edit&cid[]='. $row->id );

?>

<tr class="<?php echo "row$k"; ?>">

<td>

<?php echo $checked; ?>

</td>

<td>

<a href="<?php echo $link; ?>">

<?php echo $row->name; ?></a>

</td>

<td>

<?php echo $row->address; ?>

</td>

<td>

<?php echo $row->reservations; ?>

</td>

<td>

<?php echo $row->cuisine; ?>

</td>

<td>

<?php echo $row->credit_cards; ?>

</td>

<td align="center">

<?php echo $published;?>

</td>

Чтобы придерживаться стандартов XHTML, нужно быть уверенным, что амперсанд представлен кодом &amp;. Мы делаем это с помощью функцией ampReplace(). Она является членом класса JOutputFilter, который подгружается вызовом jimport ('joomla.filter.output').

Joomla! имеет много различных библиотек для таких вещей, как XML и RSS. Вместо того чтобы загружать полный набор библиотек каждый раз, мы используем jimport() для загрузки кода только там, где это необходимо.

Вам необходимо обновить код ПИ. Для начала, перейти к switch() в toolbar.reviews.php файл и проверить что 'edit' находится сразу над 'add':

case 'edit':

case 'add':

TOOLBAR_reviews::_NEW();

break;

Теперь, когда функции редактирования созданы, мы можем добавить кнопку "Изменить", что добавит возможность работы с чекбоксами как альтернативу ссылкам. Перейдите к файлу toolbar.reviews.html.php и проверьте его на наличие такой строки в TOOLBAR_reviews::_default():

JToolBarHelper::unpublishList();

JToolBarHelper::editList();

JToolBarHelper::deleteList();

Сохраните все ваши файлы, а затем обновите страницу

http://localhost/joomla/administrator/index.php?option=com_reviews. Должна появиться запись со ссылкой. Нажмите эту ссылку, и вы должны перейти на такой экран:

Возможно, вы заметили кнопку Apply на ПИ на экране редактирования. Это сделано для того, чтобы позволить людям сохранять промежуточные этапы редактирования записи. Для того, чтобы эта кнопка функционировала должным образом, нам придется внести два изменения в admin.reviews.php файл. Изменить switch() следующим образом:

case 'apply':

case 'save':

saveReview( $option, $task );

break;

И добавить выделенный параметр task в определение функции:

function saveReview( $option, $task )

Then change the last line of saveReview() to the following code that checks the

current $task:

switch ($task)

{

case 'apply':

$msg = 'Changes to Review saved';

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

'&task=edit&cid[]='. $row->id;

break;

case 'save':

default:

$msg = 'Review Saved';

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

break;

}

$mainframe->redirect($link, $msg);

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