Шаг 7. Создание формы для обзоров
E-mail Печать PDF
Рейтинг пользователей: / 0
ХудшийЛучший 

Шаг 7. Соз­да­ние фор­мы для соз­да­ния и ре­дак­ти­рова­ния об­зо­ров

Для то­го что­бы мы мог­ли до­бав­лять и из­ме­нять за­писи в БД нам ну­жен дру­жест­вен­ный ин­терфейс. Для это­го да­вай­те соз­да­дим фор­му для соз­да­ния и ре­дак­ти­рова­ния об­зо­ров.

От­де­лим предс­тав­ле­ние HTML фор­мы от ее ло­гики об­ра­бот­ки. Не­об­хо­димы код для ее об­ра­бот­ки бу­дет на­ходить­ся в фай­ле ad­mi­nist­ra­tor/com­po­nents/com_go­od­ti­mes/ad­min.go­od­ti­mes.php, предс­тав­ле­ние ее в фай­ле ad­mi­nist­ra­tor/com­po­nents/com_go­od­ti­mes/ad­min.go­od­ti­mes.html.php.
Отк­рой­те файл ad­min.go­od­ti­mes.php и за­мени­те весь су­щест­ву­ющий код вот этим:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
de­fined( '_JE­XEC' ) or die( 'Rest­ric­ted ac­cess' );

re­qu­ire_on­ce( JApp­li­cati­on­Helper::get­Path( 'ad­min_html' ) );
JTab­le::ad­dInc­lu­dePath(JPATH_COM­PO­NENT.DS.'tab­les');

switch($task)
{
case 'add':
editGoodtime( $option );
break;

}

func­ti­on edit­Go­od­ti­me( $op­ti­on )
{
$row =& JTable::getInstance('Goodtimes', 'Table');
$lists = array();
$lists['smoking'] = JHTML::_('select.booleanlist', 'smoking', 'class="inputbox"', $row->smoking);
$lists['published'] = JHTML::_('select.booleanlist', 'published', 'class="inputbox"', $row->published);

HTML_goodtimes::editGoodtime($row, $lists, $option);

}

?>

Пос­ле про­вер­ки, что этот файл выз­ван в пре­делах Jo­om­la, мы ис­поль­зу­ем re­qu­ire_on­ce (JApp­li­cati­on­Helper:: get­Path ('ad­min_html')) что­бы подк­лю­чить файл ad­min.go­od­ti­mes.html.php.

Хо­тя мы не бу­дем ра­ботать с БД сра­зу, но мы все рав­но вклю­ча­ем класс на­шей таб­ли­це стро­кой: JTab­le::ad­dInc­lu­dePath(JPATH_COM­PO­NENT.DS.'tab­les');

Здесь JPATH_COM­PO­NENT – это аб­со­лют­ный путь до на­шего ком­по­нен­та в ад­ми­нист­ра­тив­ной час­ти, DS – ав­то­мати­чес­ки пос­та­вит слеш в нуж­ную сто­рону в за­виси­мос­ти от опе­раци­он­ной сис­те­мы.

Да­лее switch() про­веря­ет пе­ремен­ную $task, что­бы за­пус­тить нуж­ную функ­цию. И на­конец функ­ция edit­Go­od­ti­me( ) го­товит нес­коль­ко пе­ремен­ных преж­де чем пе­редать их в функ­цию по­каза фор­мы HTML_go­od­ti­mes::edit­Go­od­ti­me($row, $lists, $op­ti­on);

Те­перь соз­дай­те файл ad­min.go­od­ti­mes.html.php и до­бавь­те в не­го код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
de­fined( '_JE­XEC' ) or die( 'Rest­ric­ted ac­cess' );
class HTML_go­od­ti­mes
{
function editGoodtime( $row, $lists, $option )
{
$editor =& JFactory::getEditor();
?>
<form action="index.php" method="post"
name="adminForm" id="adminForm">
<fieldset class="adminform">
<legend>Подробности</legend>
<table class="admintable">
<tr>
<td width="100" align="right" class="key">
Наименование:
</td>
<td>
<input class="text_area" type="text" name="name"
id="name" size="50" maxlength="250"
value="<?php echo $row->name;?>" />
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Адрес:
</td>
<td>
<input class="text_area" type="text" name="address"
id="address" size="50" maxlength="250"
value="<?php echo $row->address;?>" />
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Отзыв:
</td>
<td>
<?php
echo $editor->display( 'review', $row->review ,
'100%', '250', '40', '10' ) ;
?>
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Примечание:
</td>
<td>
<textarea class="text_area" cols="20" rows="4"
name="notes" id="notes" style="width:500px"><?php echo
$row->notes; ?></textarea>
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Курить:
</td>
<td>
<?php
echo $lists['smoking'];
?>
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Кредитная карта:
</td>
<td>
<input class="text_area" type="text" name="credit_cards"
id="credit_cards" size="50" maxlength="250"
value="<?php echo $row->credit_cards;?>" />
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Дата:
</td>
<td>
<?php echo JHTML::calendar($row->review_date, 'review_date', 'review_date'); ?>
</td>
</tr>
<tr>
<td width="100" align="right" class="key">
Публикация:
</td>
<td>
<?php
echo $lists['published'];
?>
</td>
</tr>
</table>
</fieldset>
<input type="hidden" name="id" value="<?php echo $row->id; ?>" />
<input type="hidden" name="option" value="<?php echo $option;?>" />
<input type="hidden" name="task" value="" />
</form>
<?php
}
}
?>

Те­перь пе­рей­ди­те по ад­ре­су: http://ваш_сайт/ad­mi­nist­ra­tor/in­dex.php?op­ti­on=com_go­od­ti­mes&task=add, вы долж­ны уви­деть сле­ду­ющее:

Шаг 7

 

Здесь на­ша функ­ция edit­Go­od­ti­me() бе­рет ря­ды таб­ли­цы БД и отоб­ра­жа­ет эту фор­му, т.е. эта функ­ция пол­ностью от­ве­ча­ет за отоб­ра­жение этой фор­мы.
Функ­ция JFac­to­ry::ge­tEdi­tor(); слу­жит для отоб­ра­жения ок­на ре­дак­то­ра.

Ска­чатьис­ходный код при­мера

стра­ница 2 стра­ница 3

Вы мо­жете от­ме­тить ин­те­рес­ные вам фраг­менты текс­та, ко­торые бу­дут дос­тупны по уни­каль­ной ссыл­ке в ад­ресной стро­ке бра­узе­ра.

Mark
LAST_UPDATED2  
Интересная статья? Поделись ей с другими: