[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Smarty не передаются параметры
Страницы: 1, 2
olimpset
Есть функция, но когда загружается шаблон, то в нем не отображаются переменные которые я отправил 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
Видимо, $smarty->assign не работает после отображения шаблона.
Почитайте про MVC. Шаблон не должен выбирать данные из бд. Это адский костыль.

_____________
Заработай на Userator
olimpset
Тогда надо писать $smarty-> new Smarty() в цикле ?
paul85
О господе... Вы все-равно продолжаете запихивать многострадальный смарти в цикл... Да еще и в месте с display.
paul85
Сделайте вот так - это правильно:

$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
Может вы и правы, ну капец что Smarty сложный, такое чувство что еще один язык учу, ладно буду пока PHP обходится, говорят что тоже нормально.
paul85
Посмотрите в сторону ООП. Без понимания хотя бы общих принципов работать с библиотеками, такими как смарти, довольно тяжело. Тем более что шаблонизатор предназначен для использования в составе MVC. А MVC, даже с хорошим пониманием ООП, штука не самая простая для осознания... Здесь на форуме идут серьезные дискуссии по этому поводу.

Главное не отчаивайтесь, и уверяю вас, ничего особо сложного нет ни в смарти, ни в MVC, ни в ООП в целом.
ilyaplot
Цитата (olimpset @ 5.05.2013 - 19:34)
Может вы и правы, ну капец что Smarty сложный, такое чувство что еще один язык учу, ладно буду пока PHP обходится, говорят что тоже нормально.

Даже не начинайте изучать Smarty. Он жрет память, процессорное время, а синтаксис php в шаблонах намного проще для php программиста и намного легче для сервера.

_____________
Заработай на Userator
paul85
ilyaplot, а ничего что шаблоны Smarty компилируются в php и отжирают ровно столько ресурсов, сколько и обычный php код? =) И разница в памяти и процессорном времени незначительная.

Посмотрите вот тут:
http://habrahabr.ru/post/128083/

и тут:
http://stackoverflow.com/questions/364989/...enchmark-anyone

А уж если использовать кэширование на front-end сервере, то и вовсе разговоры на этот счет неуместны. Единственное о чем есть резон говорить, так это об удобстве. Наследование в шаблонах штука крайне удобная! И скорость разработки. Но это в высшей степени холивар из разряда "MySQLi vs любой враппер". И спорить на этот счет даже начинать не буду. =)
ilyaplot
Ну не вижу смысла вообще.

{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
ему уже писали про альтернативный синтаксис

_____________
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
paul85
Фишка не в синтаксисе ведь (это каждому свое). Фишка в наследовании шаблонов.
ilyaplot
Наследование шаблонов реализуется 3 строчками в php

_____________
Заработай на Userator
paul85
ilyaplot, расскажите же скорее - какими именно?
ilyaplot
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
Быстрый ответ:

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