{include_php}

技术注解:{include_php}在Smarty中已经将要过时,通过定制模板函数你可以达到相似的函数功能。使用{include_php}的唯一原因就是你真的需要将PHP函数与plugins/目录或你的应用代码隔离。参见组件化的模板以获得更详细的信息。

属性名 类型 必需? 缺省 描述
filestringYesn/a 要包含的PHP文件的名称
oncebooleanNoTRUE 如果多次包含,那么是否要包含PHP文件多次
assignstringNon/a 包含的PHP文件的输出所要赋值的变量名

    {include_php}标记用来包含一个PHP脚本到你的模板中。如果$security打开,那么PHP脚本必需在$trusted_dir路径中。{include_php}标记必需有属性file,包含着被包含的PHP文件的路径,要么是相对于$trusted_dir的路径,要么是绝对路径。

    缺省情况下,PHP文件只会被包含一次,即使在模板中多次调用也是如此。你可以使用once属性指定每次都要包含文件。将once设置为FALSE将在每次文件包含在模板里时都包含PHP脚本。

    你也可以传递assign属性,指定一个模板变量名,而{include_php}的输出将赋值给这个变量,而不是直接输出。

    Smarty对象在你包含的PHP脚本中可以通过$this引用。

例子7-21. 函数{include_php}

    load_nav.php模板:

<?php

// load in variables from a mysql db and assign them to the template
require_once('MySQL.class.php');
$sql = new MySQL;
$sql->query('select * from site_nav_sections order by name',SQL_ALL);
$this->assign('sections',$sql->record);

?>

    而模板为:

{* absolute path, or relative to $trusted_dir *}
{include_php file='/path/to/load_nav.php'}

{foreach item='curr_section' from=$sections}
  <a href="{$curr_section.url}">{$curr_section.name}</a><br />
{/foreach}

    参见{include}{php}{capture}模板资源以及组件化的模板