В разделе о MVC на этом форуме
http://irbis-team.com/15/3/6?PHPSESSID=62d...5712b6532257f64
предлагается структура сайта.
Если в структуре использовать смарти - структура конечно меняется.
Есть index.php
<?php
//файл переменных
include './variables.php';
//переключатель страниц
switch($page)
{
case 'main':
include './modules/main/main.php';
break;
case 'second':
//include '';
break;
case 'news':
include './modules/news/news.php';
break;
default :
include './modules/main/main.php';
break;
}
//подключаем смарти
include 'setupsmarty/setup.php';
$smarty = new Smarty_xts;
//устанавка значений переменной в процессе выполнения шаблона
$smarty->assign('title',$title);
...
$smarty->assign('page',$page);
$smarty->display('index.tpl');
?>
Которому соответствует index.tpl
<html>
<head>
....
</head>
<body>
{include file="header.tpl"}
<div id="content" >
<!-- смартавский переключатель страниц-->
{if $page == 'main'}
{include file="main.tpl"}
{elseif $page == 'second'}
{include file="second.tpl"}
{elseif $page == 'news'}
{include file="news.tpl"}
{else}
{include file="main.tpl"}
{/if}
</div>
<div id = "footer"> </div>
</body>
</html>
Переключатель страниц разделятся на два файла - файлы пхп и соответствующие им файлы шаблона.
Насколько корректная такая структура?
Насколько это соответствует MVC ??
Спустя 7 минут, 57 секунд (12.02.2011 - 23:23) twin написал(а):
Начнем с этой фразы:
Цитата |
Я сейчас покажу еще одну структуру, которая очень похожа на упомянутую, но кроме того содержит в себе модульный элемент |
Дело в том, что это можно назвать MVC с довольно внушительной натяжкой. Я вообще не шибко то люблю эти ярлыки. Они сковывают и не дают свободы мысли.
Вот и ты сейчас задаешь вопрос:
Цитата |
Насколько это соответствует MVC ?? |
А кто вообще сказал, что должно соответствовать? Тебе так удобно, значит так и пиши.
Спустя 32 секунды (12.02.2011 - 23:23) alex12060 написал(а):
Вообще, я слышал такое, что МВС - это Model Viewer Controller
Используется для удобного использования индекстной страницы для впихания как можно большего хтмл кода и меньшего пхп.
У тебя сделаны шаблоны - + к МВС
У тебя огромное разграничение через switch...case - минус к МВС
Итог, если оптимизируешь вот это:
В функцию, то будет немного похоже на МВС. А так, что-то пока слабовато)
Используется для удобного использования индекстной страницы для впихания как можно большего хтмл кода и меньшего пхп.
У тебя сделаны шаблоны - + к МВС
У тебя огромное разграничение через switch...case - минус к МВС
Итог, если оптимизируешь вот это:
//переключатель страниц
switch($page)
{
case 'main':
include './modules/main/main.php';
break;
case 'second':
//include '';
break;
case 'news':
include './modules/news/news.php';
break;
default :
include './modules/main/main.php';
break;
}
В функцию, то будет немного похоже на МВС. А так, что-то пока слабовато)
Спустя 14 минут, 41 секунда (12.02.2011 - 23:38) vn214 написал(а):
Цитата (alex12060 @ 12.02.2011 - 23:23) |
Вообще, я слышал такое, что МВС - это Model Viewer Controller Используется для удобного использования индекстной страницы для впихания как можно большего хтмл кода и меньшего пхп. У тебя сделаны шаблоны - + к МВС У тебя огромное разграничение через switch...case - минус к МВС Итог, если оптимизируешь вот это:
В функцию, то будет немного похоже на МВС. А так, что-то пока слабовато) |
То есть переключателя страниц не будет - вместо него некая функция.
Или ты имел в виду функцию содержащею переключатель ?
Спустя 22 минуты, 42 секунды (13.02.2011 - 00:01) alex12060 написал(а):
Цитата |
Или ты имел в виду функцию содержащею переключатель ? |
Так точно. Просто, в нее будет поступать $_GET параметр, в качестве параметра, и уже в зависимости от этого, будет инклудить тебе нужный файл.
Спустя 48 минут, 34 секунды (13.02.2011 - 00:49) Invis1ble написал(а):
alex12060
Цитата |
Используется для удобного использования индекстной страницы для впихания как можно большего хтмл кода и меньшего пхп. |
че за ересь? )
Спустя 7 минут, 5 секунд (13.02.2011 - 00:57) twin написал(а):
Цитата |
Так точно. Просто, в нее будет поступать $_GET параметр, в качестве параметра, и уже в зависимости от этого, будет инклудить тебе нужный файл. |
Ну и что в этом хорошего?
Открываю я такой скрипт и вижу:
function route($get)Здорово, две строчки. Только момет. А как тут два файла подключить? Один в другом? И так нихрена не понятно что где.
{
include $get.'php';
}
Такая штука стоит в роутере модуля. А модуль гораздо удобнее переключать свитчем.
vn214
Цитата |
Насколько корректная такая структура? |
Я вот только не пойму, зачем этот изврат? Зачем шаблоны инклюдить в смартях? Чем php не устроило?
Спустя 21 час, 10 минут, 13 секунд (13.02.2011 - 22:07) vn214 написал(а):
[QUOTE=twin,13.02.2011 - 00:57] [QUOTE]
vn214
[QUOTE]Насколько корректная такая структура?[/QUOTE]
Я вот только не пойму, зачем этот изврат? Зачем шаблоны инклюдить в смартях? Чем php не устроило? [/QUOTE]
Насколько понял ( возможно ошибаюсь) если использовать смарти
файл index.php
так сделать нельзя (будут отображаться куски (дивы) как попала)
так как в конце файла index.php есть функция которая отображает шаблон.
А в index.tpl'
После выполнения например main.php - загружается main.tpl
который представляет собой набор дивов
Если не так, какой другой вариант при использовании смарти ?
P.S. Если в шаблонах main.tpl, second.tpl и т.д. есть дивы с одинаковыми
id - влияет ли как то корректность DOM. Конечно загружается только один шаблон - и id будет уникальным. Но все таки.
vn214
[QUOTE]Насколько корректная такая структура?[/QUOTE]
Я вот только не пойму, зачем этот изврат? Зачем шаблоны инклюдить в смартях? Чем php не устроило? [/QUOTE]
Насколько понял ( возможно ошибаюсь) если использовать смарти
файл index.php
switch($page)
{
case 'main':
include './modules/main/main.php';
include './templates/main.tpl';
break;
case 'second':
//include '';
break;
case 'news':
include './modules/news/news.php';
include './templates/news.tpl';
break;
default :
include './modules/main/main.php';
include './templates/main.tpl';
break;
}
так сделать нельзя (будут отображаться куски (дивы) как попала)
так как в конце файла index.php есть функция которая отображает шаблон.
$smarty->display('index.tpl');
А в index.tpl'
....
<body>
{include file="header.tpl"}
<div id="content" class="ieroundbox">
{if $page == 'main'}
{include file="main.tpl"}
{elseif $page == 'second'}
{include file="second.tpl"}
{elseif $page == 'news'}
{include file="news.tpl"}
{else}
{include file="main.tpl"}
{/if}
</div>
...
</body>
После выполнения например main.php - загружается main.tpl
который представляет собой набор дивов
<div id="s"> нужный текст</div>
<div id="t"> нужный текст</div>
Если не так, какой другой вариант при использовании смарти ?
P.S. Если в шаблонах main.tpl, second.tpl и т.д. есть дивы с одинаковыми
id - влияет ли как то корректность DOM. Конечно загружается только один шаблон - и id будет уникальным. Но все таки.
_____________
Спартак - чемпион