[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подключение шаблонов
ячсмит
Как делается правильное распределение кода и подключение шаблонов в функциональном программировании?
В идеале, я так понимаю, должно быть так:
(?)
- файл с функциями, в которых делаются все вычисления и работа с базой
- файл "контроллер" (или несколько?) на который приходят запросы и который вызывает функции и подключает шаблоны
- файлы шаблонов, в которых производится вывод вкраплениями php-кода
- еще какие-то вспомогательные файлы(?)


//конроллер

require_once ('connect.php');
require_once ('functions.php');

//какое-то действие пользователя или еще какое-то условие(например, проверка прав админ/пользователь)

switch ($_REQUEST['action'])
{
case 'test':
$variable = $_POST['action'];
getVariables($variable);
include('tpl.php');
break;
...


}



но не всегда получается подключать по схеме "получили условие-вызвали функцию-заинклудили шаблон".

возьмем для примера сайт: админ добавляет/удаляет статьи, гости комментируют

Например, в каждый шаблон для админа нужно (?) добавить проверку, чтоб набравший адрес страницы пользователь не зашел из-за этого не всегда получается инклудить шапку, ставить куки итд


//шаблон
<?php
header("Content-Type: text/html; charset=utf-8");
require_once ('connect.php');
require_once ('function_global.php');
session_start();

if (authorized()) {
?>

<html>
//тут html шаблон

</html>
<?php
}
else
{
echo'Вы не админ';
}
?>



В "контроллере" когда запрос на публикацию - куча хедеров (иначе накидают комментов по f5)
include только при вызове вывода.


//контроллер
<?
header("Content-Type: text/html; charset=utf-8");
require_once ('connect.php');
require_once ('functions.php');
session_start();

if ($_REQUEST['action']) {
if (authorized()) {
switch ($_REQUEST['action'])
{
case 'del':
$id_article = $_GET['id_article'];
deleteArticle($id_article);
header('Location: index.php');
break;

case 'del_comment':
$id_comment = $_GET['id_comment'];
deleteComment($id_comment);
$a = $_GET['id_article'];
header("Location: page.php?id_article=$a");
break;

case 'add':
$title = $_POST['title'];
$picture = $_POST['picture'];
$annotation = $_POST['annotation'];
$text = $_POST['text'];
newArticle($title, $picture, $annotation, $text);
header('Location: index.php');
break;

}
}



switch ($_REQUEST['action'])
{
case 'commentate':
$article = $_POST['article'];
$username = $_POST['username'];
$msg = $_POST['msg'];
newComment($article, $username, $msg);
$a = $_POST['article'];
header("Location: page.php?id_article=$a");
break;

default:
echo 'Неверный запрос';
}

}

else
{
require('menu.php');
$result = getArticles();
require('main.php');
}

?>


Понятно, что для этого есть ООП, точка входа итд, но интересует пока именно как делается на функциях. Есть же простые сайты (но с авторизацией и разграничением прав итд) ради которых не имеет смысла городить классы?

Подскажите, как правильно распределять функционал по страницам и подключать шаблоны? или где такую информацию можно найти.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.