Файл: wboard/docs/pages/examples.html
Строк: 768
<?php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" href="../style.css" />
<title>WBoard - Documentation: Написание модулей</title>
</head>
<body>
<div class="logo">
<a href="../index.html"><img src="../logo.png" alt="WBoard" /></a>
</div>
<div class="title_content">
Написание модулей
</div>
<div class="container" id="up">
<div class="menu">
<h1>Навигация:</h1>
<div class="board_item"><a href="./install.html">Установка</a></div>
<div class="board_item"><a href="./structure.html">Архитектура движка</a></div>
<div class="board_item"><span>Написание модулей</span></div>
<div class="board_item"><a href="./styles.html">Создание стилей</a></div>
<div class="board_item"><a href="./changelog.html">Лог изменений</a></div>
</div>
<div class="content">
<p class="item">
Первым шагом необходимо создать контроллер нашего модуля в директории /system/controller<br />
Итак, создаем файл test.php с кодировкой UTF-8 без BOM и форматом UNIX.<br />
Начальное содержимое файла должно быть следующим:<br /><br />
<code style="font-family:monospace;">
<span style="color: #000000; font-weight: bold;">class</span> Module_Test <span style="color: #000000; font-weight: bold;">extends</span> Module<br />
<span style="color: #009900;">{</span><br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> index<span style="color: #009900;">(</span><span style="color: #009900;">)</span><br />
<span style="color: #009900;">{</span><br />
<span style="color: #666666; font-style: italic;">//</span><br />
<span style="color: #009900;">}</span>
<br /><br />
<span style="color: #009900;">}</span>
</code><br />
Для работы с базой данных желательно использовать функции класса /system/classes/model.php которая доступна как $this->model<br />
Если вы не нашли подходящей функции в этом классе, то можно создать ее в своём контроллере.<br />
<strong>Вносить изменения в системные классы не рекомендуется</strong>, дабы не возникало проблем при обновлении движка<br />
Для работы с бд напрямую из контроллера используйте объект класса MySQLi, который доступен как $this->db<br />
Для работы с шаблонами оформления используется класс Template, который доступен как $this->tpl<br />
Для работы с фразами используйте $this->lng<br />
Описания классов смотрите в разделе <a href="./structure.html">Архитектура движка</a><br /><br />
Пара слов о <strong>шаблонах оформления</strong>.<br />
Шаблоны располагаются в директории /system/view<br />
Представляют собой файлы с расширением php<br />
Шаблоны с префиксом __helper используются только в системном классе Helper<br />
Шаблоны с префиксом _ могут использоваться где угодно.<br />
Шаблон _layot является контейнером для остальных шаблонов и загружается автоматически при завершении работы скрипта.<br />
Шаблоны, которые используются в контроллерах должны иметь в имени префикс с названием контроллера и символом нижнего подчеркивания.<br />
Например: test_view.php<br />
Для большего удобства желательно указывать после префикса имя метода в котором используется шаблон.<br />
В шаблонах доступны поля и методы класса Template.<br />
Обращаться к ним следует через $this<br />
Поля и методы, которые можно использовать в шаблонах:<br />
$this->lng - контейнер языковых фраз<br />
$this->title - заголовок страницы выводящийся в <title></title><br />
$this->load() - загрузчик шаблонов<br /><br />
<strong>Капча</strong><br />
Для работы с капчей используется контроллер captcha<br />
Чтобы отобразить капчу в своем шаблоне нужно использовать следующий код:<br /><br />
<code>
<span style="color: #000000; font-weight: bold;"><?=</span> <span style="color: #000088;">$display_captcha</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span> ? <span style="color: #0000ff;">'<p>'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-></span><span style="color: #004000;">load</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'_captcha'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'error'</span> <span style="color: #339933;">=></span> <span style="color: #000088;">$error</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'</p>'</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">''</span> <span style="color: #000000; font-weight: bold;">?></span>
</code><br />
Этот код загрузит шаблон, предназначенный для вывода капчи (который обращается к контроллеру captcha).<br />
Переменная $display_captcha определяет разрешен ли в настройках вывод капчи, $error - массив с сообщением об ошибке, которое должно иметь ключ captcha<br />
Эти переменные необходимо передать в контроллере вашему шаблону следующим образом:<br />
<code style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-></span><span style="color: #004000;">tpl</span><span style="color: #339933;">-></span><span style="color: #004000;">load</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'test_view'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">(</span>
<span style="color: #0000ff;">'error'</span> <span style="color: #339933;">=></span> <span style="color: #000088;">$error</span><span style="color: #339933;">,</span>
<span style="color: #0000ff;">'display_captcha'</span> <span style="color: #339933;">=></span> <span style="color: #000088;">$this</span><span style="color: #339933;">-></span><span style="color: #004000;">settings</span><span style="color: #009900;">[</span><span style="color: #0000ff;">'captcha'</span><span style="color: #009900;">]</span><span style="color: #339933;">,</span>
<span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
</code><br />
Пожалуй, приведу полный пример работы с капчей, чтобы было более менее понятно:<br />
<code>
<span style="color: #000000; font-weight: bold;">class</span> Module_Test <span style="color: #000000; font-weight: bold;">extends</span> Module<br />
<span style="color: #009900;">{</span><br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> index<span style="color: #009900;">(</span><span style="color: #009900;">)</span><br />
<span style="color: #009900;">{</span><br />
<span style="color: #000088;">$error</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">(</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
<span style="color: #666666; font-style: italic;">// Check captcha</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span><span style="color: #000088;">$this</span><span style="color: #339933;">-></span><span style="color: #004000;">settings</span><span style="color: #009900;">[</span><span style="color: #0000ff;">'captcha'</span><span style="color: #009900;">]</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
<span style="color: #000088;">$captcha</span> <span style="color: #339933;">=</span> <span style="color: #990000;">isset</span><span style="color: #009900;">(</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">[</span><span style="color: #0000ff;">'captcha'</span><span style="color: #009900;">]</span><span style="color: #009900;">)</span> ? <span style="color: #990000;">trim</span><span style="color: #009900;">(</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">[</span><span style="color: #0000ff;">'captcha'</span><span style="color: #009900;">]</span><span style="color: #009900;">)</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$_SESSION</span><span style="color: #009900;">[</span><span style="color: #0000ff;">'captcha'</span><span style="color: #009900;">]</span> <span style="color: #339933;">=</span> <span style="color: #990000;">isset</span><span style="color: #009900;">(</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">[</span><span style="color: #0000ff;">'captcha'</span><span style="color: #009900;">]</span><span style="color: #009900;">)</span> ? <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">[</span><span style="color: #0000ff;">'captcha'</span><span style="color: #009900;">]</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span><span style="color: #990000;">empty</span><span style="color: #009900;">(</span><span style="color: #000088;">$captcha</span><span style="color: #009900;">)</span> <span style="color: #339933;">||</span> <span style="color: #990000;">empty</span><span style="color: #009900;">(</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">[</span><span style="color: #0000ff;">'captcha'</span><span style="color: #009900;">]</span><span style="color: #009900;">)</span> <span style="color: #339933;">||</span> <span style="color: #009900;">(</span><span style="color: #000088;">$captcha</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">[</span><span style="color: #0000ff;">'captcha'</span><span style="color: #009900;">]</span><span style="color: #009900;">)</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
<span style="color: #000088;">$error</span><span style="color: #009900;">[</span><span style="color: #0000ff;">'captcha'</span><span style="color: #009900;">]</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-></span><span style="color: #004000;">lng</span><span style="color: #339933;">-></span><span style="color: #004000;">wrong_captcha</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">}</span><br />
<span style="color: #009900;">}</span><br />
<span style="color: #009900;">}</span><br />
<span style="color: #000088;">$this</span><span style="color: #339933;">-></span><span style="color: #004000;">tpl</span><span style="color: #339933;">-></span><span style="color: #004000;">load</span><span style="color: #009900;">(</span><span style="color: #0000ff;">'test'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">(</span><br />
<span style="color: #0000ff;">'error'</span> <span style="color: #339933;">=></span> <span style="color: #000088;">$error</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">'display_captcha'</span> <span style="color: #339933;">=></span> <span style="color: #000088;">$this</span><span style="color: #339933;">-></span><span style="color: #004000;">settings</span><span style="color: #009900;">[</span><span style="color: #0000ff;">'captcha'</span><span style="color: #009900;">]</span><span style="color: #339933;">,</span><br />
<span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br /><br />
<span style="color: #009900;">}</span>
</code><br /><br />
<strong>Передача параметров в методы контроллера</strong><br />
Роутер позволяет передавать данные в метод контроллера из URI.<br />
Рассмотрим это на небольшом примере:<br />
<code><span style="color: #000000; font-weight: bold;">class</span> Module_Test <span style="color: #000000; font-weight: bold;">extends</span> Module<br />
<span style="color: #009900;">{</span><br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> index<span style="color: #009900;">(</span><span style="color: #000088;">$arg1</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #000088;">$arg2</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span><br />
<span style="color: #000088;">$this</span><span style="color: #339933;">-></span><span style="color: #004000;">display</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span><br />
<span style="color: #990000;">var_dump</span><span style="color: #009900;">(</span><span style="color: #000088;">$arg1</span><span style="color: #339933;">,</span> <span style="color: #000088;">$arg2</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">}</span><br />
<br /><br />
<span style="color: #009900;">}</span>
</code><br />
Перейдя по адресу http://yourboard/w_action/test/1/2 увидим, что переменные приняли соответствующие значения.<br />
Важно помнить, что переменным в определении функции всегда нужно давать значения по умолчанию, иначе будут выдаваться ошибки.<br />
В этом примере как вы уже наверное заметили, присутствует незнакомая строка $this->display = FALSE;<br />
Эта строка отключает автоматическую загрузку и вывод главного шаблона.<br /><br />
<strong>Работа с языковым файлом</strong><br />
Файл с фразами находится в директории /system и называется lang.php<br />
Файл представляет собой обычный php массив, в котором хранятся все фразы используемые в движке.<br />
Для доступа к фразе используйте $this->lng->имя_ключа<br />
Если ключа в файле не существует будет выведено имя ключа, заключенное в символы ##.<br />
Т.е. следующим образом: #имя_ключа#<br /><br />
На этом всё, надеюсь ничего не забыл.<br />
</p>
</div>
</div>
<div class="footer">
<div class="navigation">
<ul>
<li><a href="./structure.html"><< Архитектура движка</a></li>
<li><a href="#up">Наверх</a></li>
<li><a href="./styles.html">Создание стилей >></a></li>
</ul>
</div>
Powered by <a href="http://w-board.su">WBoard</a> ©2013
</div>
</body>
</html>
?>