Шаг 1
Шаблоны
Мы уже сделали одну гостевую книгу, основанную на файловой системе. Посмотрим теперь, чем отличается такая же книга, только с применением баз данных.
Кроме того, оценим всю прелесть
готовой рамки, которую, я надеюсь, Вы тоже успели изучить.
Вот тут можно её скачать
.
И так, как организовано хранение и изменение информации в базе данных? А так же, как и в файлах. Вернее, точно в таких же файлах, только управляет записью, чтением и вообще работой с данными целый сервер, который дает кучу преимуществ и всяких вкусностей.
Хотя не будем забегать вперед, до хранения нам нужно сначала принять эти данные, а, значит, нужна форма. Вот она:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<!-- ./skins/tpl/guest/show.tpl begin --> <h2>Гостевая книга</h2> <?php echo $rows; ?> <div style="text-align:center;" > <form action="" method="post"> Имя:<br /> <input name="form[value1]" type="text" value="<?php echo $POST['value1'];?>"/><br /> Сообщение:<br /> <textarea name="form[value2]" cols="40" rows="10"><?php echo $POST['value2'];?></textarea><br /> <br /> <input name="ok" type="submit" /> <br /> <br /> </form> </div>
<!-- ./skins/tpl/guest/show.tpl end -->
|
Форму запишем прямо в файл
show.tpl (можно, кстати, легко догадаться по маркировке на шаблоне).По ней же не трудно понять, что модуль будет называться
guest, нужно изготовить такую директорию в папке
tpl. А вернее, переименовать уже имеющуюся заготовку (
second).
Ну, а коль скоро мы изменили название страницы, значит нужно изменить установочный массив:
config.php
1
2
3
4
5
6
7
8
9
10
11 |
/** * Installation page * Установка страниц */ $CONFIG_SETTING = array( 'main' => 'Главная страница',
'guest' => 'Гостевая книга' ,
);
|
Раз мы ковыряемся в шаблонах, то сделаем сразу и шаблон поста:
guest/rows.tpl
1
2
3
4
5
6
7
8
9
|
<!-- ./skins/tpl/guest/rows.tpl begin --> <div style="border:1px solid; width:70%; background-color:#66FFFF; min-height:100px; margin:5px; margin-left:10%; padding:5px"> <?php echo $tpl_date; ?> / <?php echo $tpl_name; ?> <hr width="30%" align="left" /> <?php echo $tpl_text; ?> </div> <!-- ./skins/tpl/guest/rows.tpl end -->
|
Вот и всё, отображение готово. Пошли дальше.
Теперь небольшой фокус. Мы переимновали модуль, а пути в роутере остались прежними. Так вот, для того, чтобы нам не переписывать каждый раз пути в роутере и вьюшке, определим текущую директорию автоматически. А так как по нашей структуре все директории модуля называются одинаково, это избавит от путаницы и лишних движений.
А еще, раз у нас теперь будет несколько контроллеров, заставим роутеры и их искать автоматически. В зависимости от того, что находится в переменной
$GET['rem']
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
|
<?php
/** * Router of the module of the main page * Роутер модуля главной страницы * @author IT studio IRBIS-team * @copyright © 2009 IRBIS-team */ /////////////////////////////////////////////////////////
/** * Generation of page of an error at access out of system * Генерация страницы ошибки при доступе вне системы */ if(!defined('IRB_KEY')) { header("HTTP/1.1 404 Not Found"); exit(file_get_contents('../../404.html')); } ////////////////////////////////////////////////////////////
/** * Define the name of the current catalogue * Определяем название текущего каталога */ $modul = basename(dirname(__FILE__));
/** * The switch of controllers * Переключатель контроллеров */ if($GET['rem'] && file_exists('./modules/'. $modul .'/'. $GET['rem'] .'_controller.php')) include './modules/'. $modul .'/'. $GET['rem'] .'_controller.php'; else { header("HTTP/1.1 404 Not Found"); exit(file_get_contents('./404.html')); } /** * Подготовка к выводу * Preparation for a conclusion */ include './modules/'. $modul .'/view.php';
|
Тут нужно учитывать, что разделы (
$GET['rem']) в ссылках должны соответствовать префиксам контроллеров.
Если ссылка вида
href('rem=read')то контроллер должен называться
read_controller.php
Контроллер теперь нужно именовать, определив принадлежность к разделу. Дефолтный (тот, который включается по умолчанию) должен называться
read_controller.php, так как это значение стоит в массиве
$GET, если его не трогали.
Соответственно во вьюшках путь будет теперь таким:
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
|
<?php
/** * View * Отображение * @author IT studio IRBIS-team * @copyright © 2009 IRBIS-team */ /////////////////////////////////////////////////////////
/** * Generation of page of an error at access out of system * Генерация страницы ошибки при доступе вне системы */ if(!defined('IRB_KEY')) { header("HTTP/1.1 404 Not Found"); exit(file_get_contents('../../404.html')); } ///////////////////////////////////////////////////////////
$POST = htmlChars($POST); /** * Includes the template * Подключаем шаблон */ include './skins/tpl/'. $modul .'/show.tpl';
|
Этот же финт ушами нужно проделать и в админке. Зато потом можно будет просто копировать модули и не трогать роутер. Он сам все сделает.
Ну а чтобы искал, нужно изменить ссылку в навигации:
1
2
3
4
5
6
7
8
9
10
|
<!-- ./skins/tpl/menu.tpl begin --> <div id="menu"> <ul> <li><a href="<?php echo href('page=main'); ?>">Главная страница</a></li> <li><a href="<?php echo href('page=guest'); ?>">Гостевая книга</a></li> </ul> </div> <!-- ./skins/tpl/menu.tpl end -->
|
И поменять путь в индексах
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
|
/** * The switch of modules * Переключатель страниц */ switch($GET['page']) { /** * Подключаем модуль приветствия * Includes the greeting module */ case 'main': include './modules/main/router.php'; break; /** * Подключаем модуль гостевой книги * Includes the module of the guest book */ case 'guest': include './modules/guest/router.php'; break; /** * Подключаем модуль приветствия по умолчанию * Includes the greeting module */ default: include './modules/main/router.php'; break; }
|
Вот тут можно посмотреть, как это работает.