[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Smarty не передаются параметры
Страницы: 1, 2
paul85
Я вот тоже не очень понял, как вызывать функцию из шаблона? Ну из контроллера понятно... А откуда в шаблоне возьмется $vars? Как мне забросить массив во вложенный шаблон? Гнать через первый? А если вложенность, скажем, 3 или 4 шаблона (ну мало ли)?

Наследование вот что такое. Есть, например, родительский шаблон. В нем указаны все заголовки, основной дизайн, меню и т.д. И есть дочерний шаблон, скажем, контент которого должен занять определенное место в родительском. Назовем их main и content.

Тогда наша картина примет такой вид:

main.tpl:

<html>
<head>
<title>
{block name=title}Главная страница{/block}</title>
</head>

<body
bgcolor="#FFFFFF">

<div
id="main">
<div
id="header"></div>
<div
id="container">
{block name=pagecontent}Добро пожаловать на наш сайт!{/block}
</div>
</div>

</body>
</html>



cintent.tpl:
{extends file="main.tpl"}
{block name=title}Наши координаты{/block}
{block name=pagecontent}
<h2>Контакты:</h2>
<p>
Обращаться по телефону: 0(000)000-00-00</p>
{/block}


Теперь если мы из смарти вызываем display main, то видим главную страницу.
А если вызываем display content, то блоки перегружаются и на экран выводится другая страница.

Мы можем перегружать сколь угодно много блоков. И строить цепочки сколь угодно длинные. Добавлять в родителя таблицы стилей, менять title, забрасывать различные картинки из потомка - короче классная штука, ОЧЕНЬ удобная.

Ну и, конечно же, при всем при этом никто не отменял переменные, которые мы можем передавать из контроллера.
ADiel
Я (забаненный на сутки ilyaplot) привел пример из Yii. Конечно, выглядит это там иначе, но принцип тот же.
В контроллере пишем $this->layout = 'main'; а потом в лейауте показываем шаблон $this->render('index');

Внутри шаблона работает функция render. Данные можно пробрасывать массивами, либо обращаться к контроллеру за данными. Все это вполне удобно. Но множественное наследование не приходится использовать, т.к. есть виджеты.

_____________
Ищи меня тут (ilyaplot)
olimpset
Аа, плевать я хотел на шаблонизатор, я подключаю все include и вместо того что бы в HTML вставлять большой код, вставляю только функцию:
<?php функция() ?>
paul85
olimpset, вполне неплохой вариант для начала. Я сам с этого начинал. Но все-равно со временем придете к ООП и MVC. Чтобы ускорить процесс можно, кстати, посмотреть в сторону не слишком навороченных фреймворков. Они, как правило, хорошо документированы и строятся на парадигме MVC.

ADiel, виджеты штука интересная. В кохане тоже присутствуют. Но их реализация вызывает некоторые опасения. Если на странице 2 виджета, то в итоге клиент инициирует как бы 3 обращения. При этом 3 раза собирается весь фреймворк, как буд-то бы вызов не внутренний, а внешний. Даже маршруты для виджетов в роутере надо прописывать. Получается утилизация ресурсов в разы больше и прямо прогрессирует в зависимости от количество виджетов на странице. Может быть где-то экономим на синглтонах, но все-равно ИМХО стремно.
ADiel
В Yii полегче с этим. Ничего лишнего там не грузится

_____________
Ищи меня тут (ilyaplot)
Быстрый ответ:

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