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吗
...全文
1231 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
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}就可以
Akuma XYD 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}-->

加载更多回复(3)

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧