![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
sandland |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 28.4.2007 Репутация: 1 Всего: 1 |
Добрый день. Недавно занялся написанием небольшой библиотеки для собственных разработок, и решил как положено сделать разделение кода и шаблонов.
Вопрос первый: посоветуете что-нибдь на тему того, как реализовывается данная модель в современных фреймворках? Вопрос второй: Для начала решил сделать так: Выполянется дейсвтие (php- код), где определяются все переменные, которые будут использоваться в шаблоне, с помощью самописных классов, а далее вызывается метод setTamplate , который подключает шаблон, в мое случае он пока его просто инклудит в файл действия. ну для примера: test.php : <?php $page=new Page(); $title=$page->getTitle(); $page->setTamplate('test_tamplate.php'); // include "tamplates/test_tamplate.php"; ?> test_tamplate.php : <head> <? echo $title; ?> </head> <body> <h1>Test Page</h1> </body> Проблема. в том, что при таком подключении переменная $title в test_tamplate.php не определена. Я пытался считать файл в строку, и вывести . само собой такой варинат не годится. Можно попробовать ф-цию eval, но это тоже невариант. Подскажите поалуйста что делать |
|||
|
||||
ZlojEzh |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.10.2005 Где: Киев, Украина Репутация: 10 Всего: 15 |
передавайте объекту Page необходимые данные
что-то вроде такого
а в темплейте
покопайтесь в фреймворках на предмет идей тот же Zend_View, например |
||||
|
|||||
sandland |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 28.4.2007 Репутация: 1 Всего: 1 |
передавать переменные - это не выход, т.к. для каждой страницы свой шаблон, и свой набор выводимых переменных. Можно, конечно формировать массив каждый раз, и передавать, но тогда вообще проще не делать разделение на дейсвтия и шаблоны.
Я пытался в Symfony найти это, пока безуспешно |
|||
|
||||
ZlojEzh |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.10.2005 Где: Киев, Украина Репутация: 10 Всего: 15 |
дык, в шаблонизаторах обычно так и происходит
данные передаются темплейту (или объекту, создающему представление) smarty, например: $smarty->assign(...) {$my_var}
а какая разница, передаете Вы переменные шаблону напрямую, или записываете их в массив, или передаете через методы объекта? все равно каждый шаблон должен знать их имена конкретно в Вашем вопросе, думаю, поможет функция get_defined_vars но это очень некрасивое решение |
|||
|
||||
Pentium133 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 17.5.2007 Репутация: 0 Всего: 1 |
В symfony так и передается, по любому имени которое должно быть известно в шаблоне. |
|||
|
||||
nerezus |
|
||||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
И передавать данные в шаблон. Почему же тогда не выход? Тем боллее, что ты "решил как положено сделать разделение кода и шаблонов".
Можно не мучать мозг сексом и использовать smarty. Или мой шаблонизатор для шаблонов на PHP:
|
||||||
|
|||||||
sandland |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 28.4.2007 Репутация: 1 Всего: 1 |
про get_defined_vars() почитал - дейсвтительно , онарешает все проблема, вот только она передает абсолютно все переменные окружения. а омжно как-то запретить передавать то что не нужно? или передачаа лишних переменных ничего не решает? - ну и решение некрасивое...
а что вы скажете на счет идеи с сессиями? что если на все страницах сайта держать одну сессию и передавать переменные через нее? nerezus, воспользовался идеей с буфером, спасибо! Это сообщение отредактировал(а) sandland - 29.11.2008, 00:22 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |