olimpset
5.05.2013 - 18:59
Есть функция, но когда загружается шаблон, то в нем не отображаются переменные которые я отправил Smarty, просто пустое место:
function all_zapisi()
{
include 'configs/config.php';
$sql = mysql_query("SELECT * FROM zapisi");
while($row = mysql_fetch_array($sql))
{
$smarty->assign('id',$row['id']);
$smarty->assign('title',$row['title']);
$smarty->assign('news',$row['news']);
$smarty->display('include_news.tpl');
}
}
ilyaplot
5.05.2013 - 19:04
Видимо, $smarty->assign не работает после отображения шаблона.
Почитайте про MVC. Шаблон не должен выбирать данные из бд. Это адский костыль.
_____________
Заработай на Userator
olimpset
5.05.2013 - 19:07
Тогда надо писать $smarty-> new Smarty() в цикле ?
О господе... Вы все-равно продолжаете запихивать многострадальный смарти в цикл... Да еще и в месте с display.
Сделайте вот так - это правильно:
$smarty = new Smarty();
$rows = all_zapisi();
$smarty->assign('data', $rows);
$smarty->display('include_news.tpl');
function all_zapisi()
{
include 'configs/config.php';
$sql = mysql_query("SELECT * FROM zapisi");
while($row = mysql_fetch_array($sql))
$data[] = $row;
return $data;
}
А еще правильнее использовать смарти не с функциями а с ООП. Тогда с видимостью гораздо логичнее и проще.
Я никак не могу понять из каких соображений вы пытаетесь запихнуть смарти в цикл? Да еще и с display? Да еще и с new...
Возможно вам и вправду не стоит спешить со Smarty и укрепить базовые знания?
olimpset
5.05.2013 - 19:34
Может вы и правы, ну капец что Smarty сложный, такое чувство что еще один язык учу, ладно буду пока PHP обходится, говорят что тоже нормально.
Посмотрите в сторону ООП. Без понимания хотя бы общих принципов работать с библиотеками, такими как смарти, довольно тяжело. Тем более что шаблонизатор предназначен для использования в составе MVC. А MVC, даже с хорошим пониманием ООП, штука не самая простая для осознания... Здесь на форуме идут серьезные дискуссии по этому поводу.
Главное не отчаивайтесь, и уверяю вас, ничего особо сложного нет ни в смарти, ни в MVC, ни в ООП в целом.
ilyaplot
5.05.2013 - 20:34
Цитата (olimpset @ 5.05.2013 - 19:34) |
Может вы и правы, ну капец что Smarty сложный, такое чувство что еще один язык учу, ладно буду пока PHP обходится, говорят что тоже нормально. |
Даже не начинайте изучать Smarty. Он жрет память, процессорное время, а синтаксис php в шаблонах намного проще для php программиста и намного легче для сервера.
_____________
Заработай на Userator
ilyaplot, а ничего что шаблоны Smarty компилируются в php и отжирают ровно столько ресурсов, сколько и обычный php код? =) И разница в памяти и процессорном времени незначительная.
Посмотрите вот тут:
http://habrahabr.ru/post/128083/и тут:
http://stackoverflow.com/questions/364989/...enchmark-anyoneА уж если использовать кэширование на front-end сервере, то и вовсе разговоры на этот счет неуместны. Единственное о чем есть резон говорить, так это об удобстве. Наследование в шаблонах штука крайне удобная! И скорость разработки. Но это в высшей степени холивар из разряда "MySQLi vs любой враппер". И спорить на этот счет даже начинать не буду. =)
ilyaplot
5.05.2013 - 20:57
Ну не вижу смысла вообще.
{foreach $data key=key item=item}
<b>{$key}</b>
<p>{$item}</p>
{/foreach}
и
<?php foreach ($data as $key=>$item): ?>
<b><?=$key?></b>
<p><?=$item?></p>
<?php endforeach; ?>
Ну в чем удобство? Зачем изучать смарти?
Я делал несколько больших проектов на смарти, но уже давно от него отказался.
_____________
Заработай на Userator
Игорь_Vasinsky
5.05.2013 - 22:27
ему уже писали про альтернативный синтаксис
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Фишка не в синтаксисе ведь (это каждому свое). Фишка в наследовании шаблонов.
ilyaplot
5.05.2013 - 22:41
Наследование шаблонов реализуется 3 строчками в php
_____________
Заработай на Userator
ilyaplot, расскажите же скорее - какими именно?
ilyaplot
5.05.2013 - 22:45
public function render($template, $vars){
extract($vars, EXTR_OVERWRITE);
ob_start();
include(TMPL_DIR.$template);
$content = ob_get_contents();
ob_end_clean();
return $content;
}
Функцию можно вызвать как из контроллера, так и из шаблона, даже вложенного
Если я неверно понял, объясните, что такое наследование шаблонов.
_____________
Заработай на Userator