smarty用php标签怎么输出变量

liujianliang 2011-09-06 11:04:24
index.php

$smarty = new Smarty;
$smarty->allow_php_tag=true;
$smarty->assign("a", "aaaaaaaaaaaaaa");
$smarty->display('index.tpl');


index.tpl
{php}
echo $a;
{/php}

用php标签可以输出变量$a吗
...全文
1154 点赞 收藏 24
写回复
24 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cckk263 2014-01-23
[php] $a = $this->_tpl_vars[a]; echo $a; [/php]
回复
wuqiang1123 2011-12-02
[php]
echo "这是php代码";
[/php]

有得版本是可以直接在模板里写php代码的
回复
helloyou0 2011-12-01
见16楼, 模板和代码部分的变量,在不同作用域
回复
linjianzao 2011-12-01
直接
{$a} 就可以了,如果你想对数据再进行处理可以看看手册
回复
dosphp 2011-12-01
可以,但是你必须定义定界符,
$smarty->left_delimiter="{php}";//指定左定界符
$smarty->right_delimiter="/{php}>";//指定左定界符
中间的echo就不要了,直接是{php}$a{/php}
回复
榕树花园 2011-11-27
为什么要用php标签,{变量}就可以,循环可以用foreach section等,够你用的。
回复
sucjun 2011-09-30
学习。。
回复
ZT_King 2011-09-27
Smarty2中php标签是默认打开,即模板默认识别,Smarty3则需要设置,也可以看出在模板中使用php标签并不是推荐做法.LZ所说的以下方法可以实现.

//php文件中这样写
global $var;//申明全局变量
...
$var = 'Hi Smarty';//赋值,无需再使用smarty的assign方法

//模板中这样获取
<{php}>echo $GLOBALS['var'];<{/php}>
回复
fsk_wyf 2011-09-26
功能描述 : 处理和分发定时器消息到不同模块处理
VOID ProcTimerMsg(PCCU_MSG_FRAME pMsg){UINT32 ulTimerCmd;CHECK; ulTimerCmd = pMsg->ucCmd;
switch(ulTimerCmd){case TIMER_CMD_ADDR_QUERY:PNP_AddrQueryProc(pMsg);..;
.. .._LINK_KEEP:PNP_LinkKeepProc(pMsg);..; .. .._BROADCAST:PNP_BroadCast(pMsg);..;
default: DBG_MSG("invalid 485 cmd type %d", (INT)ulTimerCmd); ..;}}

CCU_485Main.h __CCU_485MAIN_H__ "CCU_List.h" "CCU_typedef.h"
/* CCU Agent 名称 */#define CCU_AGENT_NAME "ccu"
/* 序列号最大长度 */.. MAX_SERIAL_NUM_LEN (500)
/* 最大字符串长度 */.. MAX_STRING_LEN (256)
/* Timer计数器复位周期 */.. TIMER_CNT_RESET_CYCLE (360000)
/* 无效的PID */.. INVALID_PID_ID (0xffff)
/* 监控线程喂狗计数器 */.. TIMER_FEED_DOG_COUNT (80)
/*保存CCU运行时的pid临时文件*/.. FILE_PID_PATH "/dev/shm/ccu_pid"
extern UINT8 g_ucCCUAbnormalRestart;
/*ccu由irm拉起 不打印启动信息*/
#define PrintStartInfo if(!g_ucCCUAbnormalRestart) printf
#ifdef SNMP
extern UINT32 SETSnmpSwitchOff(VOID); #else ..;#endif
extern VOID PrintInitinfo(UINT8 *pucInfo, UINT8 ucLen);
.. .. ..(UINT32 ulRet);#endif

CCU_485Main.c "CCU_typedef.h"
".._485Main.h"".._485Init.h"".._485msg.h"".._485comm.h"".._Adapt.h"".._PNP.h"
".._Public.h"".._Log.h"".._File.h"".._Power.h"".._MPI.h"".._DFT.h"".._CpuRate.h"
".._Manager.h"".._485Alarm.h"".._Monitor.h"".._CpldLoad.h"".._Trap.h"".._List.h"
".._MsgCenter.h"".._UDP.h"".._CMD.h"".._ELock.h"".._BoardSensor.h"".._Adapt.h"
/* 系统总开关 */UINT8 g_AllSwitch = CCU_FALSE;
/* CPLD自检测试失败 */.. g_ucCpldTestFail = CCU_FALSE;
/* Main文件中错误打印开关 */.. g_ucMainPrtMat = CCU_TRUE;
/* 为了避免打印混乱和readline进程进行通信 */INT32 g_iReadLineSyn = 0;
/*CCU单板的自检状态:默认为器件均工作正常*/
UINT16 g_usCCUSelfStatus = CCU_NULL_WORD;
/* CCU是否运行标志 */UINT8 g_ucCCURunFlag = CCU_FALSE;
/* CCU被irm重新拉起 */UINT8 g_ucCCUAbnormalRestart = CCU_FALSE;
回复
fsk_wyf 2011-09-26
功能描述 : 产生定时消息
VOID TimerMsgGenerator(UINT32 ulTimerCount){
UINT8 buf = 0; /* 链路维护定时器到 */
if (0 == (ulTimerCount % g_stMsgRad.ulLinkKeepMsgRad))
{SendTimerMsg(TIMER_CMD_LINK_KEEP);}
/* 地址轮询定时器到 */if (.. g_stMsgRad.ulAddrQueryMsgRad))
{ ..(TIMER_CMD_ADDR_QUERY);}if (.. CCU_TIMER_VALUE_100MS))
{ALM_ScanReportTab();} if (.. % .._100MS) ) {SendMsgCenterTimer( );
/* 部件管理模块100ms处理已经去掉 */#if 0SendManger100msMsg();#endif}
if (.. %.._500MS)){SendManger500msMsg();ScanDtTxTab();}
if (.. %.._1S)){SendManger1sMsg();
PnP_Send2CCU(CCU_TIMER_MSG_TYPE, MAN_1S_TYPE, &buf, 0);}
if (.. %.._5S)){SendManger5sMsg();}/* 广播消息定时器时间到 */
if (.. %.._10S)){SendTimerMsg(TIMER_CMD_BROADCAST);}
if (.. %.._30S)){SendManger1hMsg();}
IF( .. %.._1M)){/*若烟感风扇联动功能使能,需要每1m发送烟感复位消息*/
IF((FAN_LINKAGE_ENABLE == g_ucSmokeFanLinkage) && (RS485_SDR_ALARM_STATE == g_ucSmokeAlarmState))
{SendCostTimeMsg(COST_TIMER_TYPE, COST_TIMER_1M_TYPE, &buf, 0);}}
if ( .. %.._4M)){PnP_Send2CCU(CCU_TIMER_MSG_TYPE, MAN_4M_TYPE, &buf, 0);
}if ( .. %.._10S)){ CCU_RegSnmpStatus();}
/* 3分钟同步一次机柜温度 */if ( .. %.._3M))
{SendCostTimeMsg(COST_TIMER_TYPE, COST_TIMER_3M_TYPE, &buf, 0);
}if ( .. %.._5M)){..(.., COST_TIMER_1H_TYPE, .., 0); }return ;}
功能描述 : 处理和分发485消息到不同模块处理
VOID Proc485Msg(PCCU_MSG_FRAME pMsg)
{UINT32 ulMsgType;CHECK;
ulMsgType = pMsg->ucNetFn;
switch(ulMsgType)
{case CCU_TIMER_MSG_TYPE:ProcTimerMsg(pMsg);break;.. .._API_..:
PNP_ProcApiMsg(pMsg);..; .. .._LOOP_..:ProcSerialLoopMsg(pMsg);..;
.. .._DT_..:PNP_ProcApiMsg(pMsg);..; .. .._485_..:.. .._485INTERNAL_TYPE:
default:DBG_MSG("invalid 485 msg type %d", (INT)ulMsgType);..;}}
回复
An4Greenhand 2011-09-22
assign一个变量就好啦啊 在页面上里 把assign里的变量 用定界符括起来 就行啦
回复
lmsskycn 2011-09-22
{php}
echo $aaaaaaaaaaaaaa;
{/php}
回复
l331533988 2011-09-22
{$a}
回复
longstu_vc_java 2011-09-21
就是,加一个echo纯属多此一举。
回复
Aaron_ 2011-09-14
定界符为{ },直接{$a}就可以
回复
qiaosazhao 2011-09-13
假设你的定界符为:{ }直接{$a}就可以
回复
Frank Dong 2011-09-07
{$a} 就行了
回复
YY_SuperMario 2011-09-07
<!--{$a}-->
回复
kyzy_yy_pm 2011-09-06
可以,在php标签中语法与在php文件中一样
回复
阿拉啦 2011-09-06
假设你的定界符为:<!--{和 }-->
那么在SMARTY中直接用 下面的方式输出PHP变量。但在程序中一定要开启 allow_php_tag=true;

<!--{php}-->
echo $a;
<!--{/php}-->

回复
加载更多回复
发帖
Framework
创建于2008-08-27

4245

社区成员

国内外优秀PHP框架讨论学习
申请成为版主
帖子事件
创建了帖子
2011-09-06 11:04
社区公告
暂无公告