| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > вопрос с includ'om и переменными |
| Автор: sandland 28.11.2008, 01:07 |
| Добрый день. Недавно занялся написанием небольшой библиотеки для собственных разработок, и решил как положено сделать разделение кода и шаблонов. Вопрос первый: посоветуете что-нибдь на тему того, как реализовывается данная модель в современных фреймворках? Вопрос второй: Для начала решил сделать так: Выполянется дейсвтие (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 28.11.2008, 01:53 | ||||
| передавайте объекту Page необходимые данные что-то вроде такого
а в темплейте
покопайтесь в фреймворках на предмет идей тот же Zend_View, например |
| Автор: sandland 28.11.2008, 01:58 |
| передавать переменные - это не выход, т.к. для каждой страницы свой шаблон, и свой набор выводимых переменных. Можно, конечно формировать массив каждый раз, и передавать, но тогда вообще проще не делать разделение на дейсвтия и шаблоны. Я пытался в Symfony найти это, пока безуспешно |
| Автор: Pentium133 28.11.2008, 11:07 | ||
В symfony так и передается, по любому имени которое должно быть известно в шаблоне. |
| Автор: nerezus 28.11.2008, 14:05 | ||||||
И передавать данные в шаблон. Почему же тогда не выход? Тем боллее, что ты "решил как положено сделать разделение кода и шаблонов".
Можно не мучать мозг сексом и использовать smarty. Или мой шаблонизатор для шаблонов на PHP:
|
| Автор: sandland 28.11.2008, 22:44 |
| про get_defined_vars() почитал - дейсвтительно , онарешает все проблема, вот только она передает абсолютно все переменные окружения. а омжно как-то запретить передавать то что не нужно? или передачаа лишних переменных ничего не решает? - ну и решение некрасивое... а что вы скажете на счет идеи с сессиями? что если на все страницах сайта держать одну сессию и передавать переменные через нее? nerezus, воспользовался идеей с буфером, спасибо! |