1. Постановка задачи
2. Анализ систем дистанционного обучения.
2.1. Преимущества дистанционного обучения
2.2. Недостатки дистанционного обучения
2.3. Аспекты технической реализации системы дистанционного обучения
3. Проектирование модулей системы дистанционного обучения
3.1. Разработка модулей наполнения и обзора лекционных материалов
3.2. Разработка модуля тестирования
4. Разработка программного обеспечения
4.1. Выбор программных средств разработки
4.1.1. Выбор операционной системы для сервера
4.1.2. Выбор Web-сервера
4.1.3. Выбор средств управления базами данных и языковых средств разработки
4.2. Проектирование БД системы дистанционного обучения
4.2.1. Представление модели данных в виде ER – диаграмм
4.2.1. Логическое проектирование БД
4.2.2. Приведение БД к табличной форме
4.2.3. Проектирование схемы БД
4.3. Разработка программных модулей
4.3.1. Разработка модели
4.3.2. Разработка контроллеров действия
4.3.3. Разработка шаблонов (view в паттерне MVC) |
Разработка шаблонов (view в паттерне MVC)
После того, как контроллер определил переменные и вызвал метод render(), Zend_View включает требуемый скрипт вида и выполняет его в области видимости Zend_View. Поэтому в шаблонах ссылки на $this ссылаются на экземляр Zend_View, а именно на класс view.
Переменные, объявленные для вида в контроллере, ссылаются на свойства экземпляра. Например, если контроллер объявил переменную 'something', то можно ссылаться на нее как на $this->something в скрипте вида (это дает вам возможность отслеживать, какие переменные были объявлены для скрипта, и какие были объявлены самим скриптом)[7].
Одной из наиважнейших задач, которую должен решать скрипт вида, является обеспечение того, что вывод должным образом экранирован; помимо прочего, это помогает предотвратить XSS-атаки. Zend_View снабжен методом escape(), который выполняет экранирование[7].
Для каждого действия контроллера определен шаблон вида, для вывода информации на страницу используется объект view.
Например, с шаблоном index.phtml сопоставлен контроллер indexAction и все методы класса View, значение которых было присвоено в indexAction, будут выведены в шаблоне indexView.
При загрузке основного шаблона, происходит подгрузка шаблонов, контент страницы которых не изменяется на любых страницах(листинг 4.19).
Листинг 4.19. – Подключение статических шаблонов.
/* Загрузка заголовка страницы. Установка группы инструкций тега Meta, загрузка скриптов, каскадной таблицы стиля, вывод меню страницы */
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=WINDOWS-1251">
<title><?php echo $this->escape($this->title); ?></title>
<link rel="shortcut icon" href="/public/images/logo/ico.ico" />
<link rel="stylesheet" type="text/css" href="/public/styles/site.css" />
<script type='text/javascript' src='/public/js/prototype.js'></script>
<script type='text/javascript' src='/public/js/func.js'></script>
<script type="text/javascript" src="/public/flash/flowplayer/html/flashembed.min.js">
</script>
Некоторые действия не требовали отображения на странице(Действия, обеспечивающее Ajax технологию, действие загрузки файла), для этого ViewRenderer был отключен через параметр фронт-контроллера noViewRenderer ($front->setParam('noViewRenderer', true)). |