Методика обучения технологии web 2.0 на примере создания школьного сайта спортивной тематики
Рефераты >> Педагогика >> Методика обучения технологии web 2.0 на примере создания школьного сайта спортивной тематики

RewriteCond %{SCRIPT_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1

Листинг 1.2 Обработка пользовательских запросов методами класса Zend-Controller(файл index.php)

<?php

require_once('Zend/Loader.php');

Zend_Loader::registerAutoload();

$controller = Zend_Controller_Front::getInstance();

$controller->setControllerDirectory($config->paths->base .

'/include/Controllers');

$controller->dispatch();

?>

Листинг 1.3 Контроллер index, используемый на главной странице веб-приложения (файл IndexController.php)

<?php

require_once('CustomControllerAction.php');

class IndexController extends CustomControllerAction

{

public function indexAction()

{

Echo’Будущий школьный сайт’;

}

}

?>

Листинг 1.4 Начальные настройки приложения (файл settings.ini)

[development]

database.type = pdo_mysql

database.hostname = localhost

database.username = phpweb20

database.password = myPassword

database.database = phpweb20

paths.base = /var/www/phpweb20

paths.data = /var/www/phpweb20/data

paths.templates = /var/www/phpweb20/templates

logging.file = /var/www/phpweb20/data/logs/debug.log

Листинг 1.5 Загрузка рабочих настроек приложения с использованием класса Zend_Config_Ini(файл index.php)

$config = new Zend_Config_Ini(' /settings.ini', 'development');

Zend_Registry::set('config', $config);

$controller->setControllerDirectory($config->paths->base .

'/include/Controllers');

Листинг 1.6 Расширение Smarty для использования в веб-приложении

(файл Templater.php)

<?php

class Templater extends Zend_View_Abstract

{

protected $_path;

protected $_engine;

public function construct()

{

$config = Zend_Registry::get('config');

require_once('Smarty/Smarty.class.php');

$this->_engine = new Smarty();

$this->_engine->template_dir = $config->paths->templates;

$this->_engine->compile_dir = sprintf('%s/tmp/templates_c',

$config->paths->data);

$this->_engine->plugins_dir = array($config->paths->base .

'/include/Templater/plugins',

'plugins');

}

public function getEngine()

{

return $this->_engine;

}

public function set($key, $val)

{

$this->_engine->assign($key, $val);

}

public function get($key)

{

return $this->_engine->get_template_vars($key);

}

public function isset($key)

{

return $this->_engine->get_template_vars($key) !== null;

}

public function unset($key)

{

$this->_engine->clear_assign($key);

}

public function assign($spec, $value = null)

{

if (is_array($spec)) {

$this->_engine->assign($spec);

return;

}

$this->_engine->assign($spec, $value);

}

public function clearVars()

{

$this->_engine->clear_all_assign();

}

public function render($name)

{

return $this->_engine->fetch(strtolower($name));

}

public function _run()

{ }

}

?>

Листинг 1.7 Новыйконтроллер, выводящийфайл index.tpl

(файл IndexController.php)

<?

class IndexController extends CustomControllerAction

{

public function indexAction()

{

}

}

?>

Листинг 1.8 Шаблондляоперации index контроллера index

(файл index.tpl)

{include file='header.tpl'}

Будущий спортивный сайт школы

{include file='footer.tpl'}

Листинг 1.9 ФайлзаголовкаHTML-страницы

(файл header.tpl)

<!DOCTYPE html

PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>

<title>Title</title>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251 " />

</head>

<body>

<div>

Листинг 1.10 Файл конца страницы, в котором закрываются тэги, открытые в заголовке(файл footer.tpl)

</div>

</body>

</html>

Листинг 2.1 Загрузочный файл приложения с использованием компонента Zend_Auth(файл index.php)

// настройка утентификации пользователей

$auth = Zend_Auth::getInstance();

$auth->setStorage(new Zend_Auth_Storage_Session());

$controller->registerPlugin(new CustomControllerAclManager($auth));

Листинг 2.2 Подключаемый модуль CustomControllerAclManager, проверяющий допуски перед отправкой запроса на обработку

(файл CustomControllerAclManager.php)

<?php

class CustomControllerAclManager extends Zend_Controller_Plugin_Abstract

{

// роль по умолчанию, если не вошел (или роль не определена)

private $_defaultRole = 'guest';

// выполнить операцию, если у пользователя не хватает привилегий

private $_authController = array('controller' => 'account',

'action' => 'login');

public function construct(Zend_Auth $auth)

{

$this->auth = $auth;

$this->acl = new Zend_Acl();

// добаляем новые роли

$this->acl->addRole(new Zend_Acl_Role($this->_defaultRole));

$this->acl->addRole(new Zend_Acl_Role('member'));

$this->acl->addRole(new Zend_Acl_Role('administrator'), 'member');

// добавляем контролируемые ресурсы

$this->acl->add(new Zend_Acl_Resource('account'));

$this->acl->add(new Zend_Acl_Resource('admin'));

// по умолчанию даем всемпользователям доступ ко всему

// кроме управления учетными записями и администрированием

$this->acl->allow();

$this->acl->deny(null, 'account');

$this->acl->deny(null, 'admin');

// добавляем исключение. чтобы гости могли войти или

// зарегистрироваться, если нет привилегий

$this->acl->allow('guest', 'account', array('login',

'fetchpassword',

'register',

'registercomplete'));

// позволяем зарегистрированным пользователям доступ к управлению учетными записями

$this->acl->allow('member', 'account');

// даем администраторам доступ в область администрирования

$this->acl->allow('administrator', 'admin');

}

/**

* preDispatch

*

* Прежде, чем отправлять запрос на обработку, проверяет есть ли у пользователя

* нужные привелегии. Если нет, инициирует операцию по умолчанию

*

*

* @param Zend_Controller_Request_Abstract $request

*/

public function preDispatch(Zend_Controller_Request_Abstract $request)

{

// проверка, вошел ли пользователь и имеет ли нужную роль


Страница: