Name

assign() — 赋值

说明

void assign(mixed var);void assign(string varname,
mixed var,
bool nocache);

你可以传递键值对,或联合数组进行赋值到模板。

如设置第三个参数nocache为true,则该变量不进行缓存。 详细参考 变量缓存

Note

在你传递对象到模板时,请记住对象在模板中使用的成员变量和方法均只为了显示。通过对象在模板中进行一些更复杂的应用逻辑是很容易的事情,但这样会成为较差的设计,并且难以管理。请参见Smarty网站上关于最佳实践的主题。


Example 14.6. assign()

  1. <?php
  2. // 传递键值对
  3. $smarty->assign('Name', 'Fred');
  4. $smarty->assign('Address', $address);
  5.  
  6. // 传递联合数组
  7. $smarty->assign(array('city' => 'Lincoln', 'state' => 'Nebraska'));
  8.  
  9. // 传递数组
  10. $myArray = array('no' => 10, 'label' => 'Peanuts');
  11. $smarty->assign('foo',$myArray);
  12.  
  13. // 传递一行数据库的返回记录 (如 adodb)
  14. $sql = 'select id, name, email from contacts where contact ='.$id;
  15. $smarty->assign('contact', $db->getRow($sql));
  16. ?>
  17.  

模板中可以直接使用:

  1. {* php一样,变量名不区分大小写 *}
  2. {$Name}
  3. {$Address}
  4. {$city}
  5. {$state}
  6.  
  7. {$foo.no}, {$foo.label}
  8. {$contact.id}, {$contact.name},{$contact.email}
  9.  

更多数组的使用方法请参见 {foreach}{section}

参见 assignByRef(), getTemplateVars(), clearAssign(), append(){assign}

原文: https://www.smarty.net/docs/zh_CN/api.assign.tpl