Отображение переменной php в шаблоне Smarty 3

Я пытался отобразить переменную php в умном шаблоне, но это было невозможно.

На моем tpl у меня есть:

<a href="#">Welcome <strong><!--{$username}--></strong></a>

На моем php у меня есть:

<?php
require('../common/Smarty/config.php');             //Smarty Config Class
require_once('../common/config/config.php');        //Project Config Class  
require_once('../common/classes/Login.php');        //Login Class 

$smarty = new Smarty();

$template = "login.tpl";

$smarty->assign ( "username", $user_name );         //first: smarty variable, last: php variable.
$smarty->display ( "{$template}" );
?>

То, что я пытаюсь сделать, это слишком отображать имя пользователя пользователя на странице входа.

Любая помощь?

Заранее спасибо.


person ccquir    schedule 14.04.2014    source источник
comment
Кстати, я использую ‹!--{ и }--› как умные разделители   -  person ccquir    schedule 14.04.2014
comment
В $smarty->display ( "{$template}" ); smarty ожидает имя файла шаблона или другой допустимый ресурс шаблона. Я думаю, что не так уж оптимально злоупотреблять комментариями html в качестве умных разделителей. Представьте, что вы действительно хотите использовать html-комментарии в своем коде, тогда вы, вероятно, получите умную синтаксическую ошибку.   -  person sofl    schedule 14.04.2014
comment
Шаблон отображается правильно, с изображениями и css все в порядке, проблема заключается в попытке отобразить переменную $user_name. На самом деле, если я удалю: $user_name и добавлю что-то вроде Питера, шаблон отобразит это имя.   -  person ccquir    schedule 14.04.2014
comment
Вы получаете какие-либо ошибки? Что вы получаете вместо переведенного значения?   -  person sofl    schedule 14.04.2014
comment
я ничего не получил, но если я добавлю: $smarty-›assign (имя пользователя, Питер); например, я получил: Добро пожаловать, Питер!. похоже, не берет имя пользователя из БД (но работает логин). Переменная $user_name находится в классе Login.php.   -  person ccquir    schedule 14.04.2014
comment
Ммм, вы убедились, что кодировка установлена ​​​​правильно?   -  person sofl    schedule 14.04.2014
comment
Я бы порекомендовал вам установить $smarty->debugging = true для тестовых целей. см. здесь: smarty.net/docs/en/variable.debugging.tpl   -  person sofl    schedule 14.04.2014


Ответы (1)


В вашей Smarty lib tpl вы должны просто написать {$username} там, где вы хотите, чтобы имя пользователя отображалось в файле login.tpl.

изменить это

<a href="#">Welcome <strong><!--{$username}-->``</strong></a>

к этому

<a href="#">Welcome <strong>{$username}</strong></a>

Вышеупомянутое работает для меня

person Matthew Thomas    schedule 14.04.2014
comment
Не работает, я получил: Добро пожаловать {$username}. (я не использую {} в качестве разделителей, я использую ‹!--{, но это не проблема. Как я уже говорил ранее, если я изменяю $user_name, например, на имя, оно отображается. - person ccquir; 14.04.2014
comment
ОТЛАДИТЕ следующее: выведите $user_name в файле php до того, как он перейдет к объявлению smarty var. Что вы получаете? - person Matthew Thomas; 14.04.2014
comment
Здравствуйте, извините за очень поздний ответ, мне пришлось ехать по личной чрезвычайной ситуации. Во всяком случае, приведенный выше код работает. Спасибо за вашу помощь. я очень ценю это. - person ccquir; 29.04.2014