Smarty include_php

include_php

Attribute Name

Type

Required

Default

描述

file

string

Yes

n/a

The name of the php file to include

once

boolean

No

true

whether or not to include the php file more than once if included multiple times

assign

string

No

n/a

The name of the variable that the output of include_php will be assigned to

屬性

類型

是否必須

缺省值

描述

file

string

Yes

n/a

待包含php文件的名稱

once

boolean

No

true

如果待包含php文件已被包含是否仍然包含(類似php中的include_once函數)

assign

string

No

n/a

該屬性指定一個變量保存待包含php文件的輸出

inluce_php 函數用於在模板中包含 php 腳本. 如果設置了安全模式,被包含的腳本必須位於 $trusted_dir 路徑下. include_php 函數必須設置 file 屬性,該屬性指明被包含 php 文件的路徑,可以是 $trusted_dir 的相對路徑,也可以是絕對路徑.

include_php 是解決模板部件化的好方法,它使得 php 代碼從模板文件中被分離出來. 舉個例子:假設有一個從數據庫中動態取出數據用於顯示站點導航的模板,你可以將得數據內容的 php 邏輯部分分離出來保存在一個單獨的文件夾下,並在模板開始的位置包含該 php 腳本. 那麼就可以在任何地方包含此模板而不用擔心之前數據庫信息是否已被程序取出.

即使是在模板中多次地調用 php 文件,默認情況下它們只被包含一次. 你可以設置 once 屬性從而指明每次調用都重新包含該文件. 如果將 once 屬性設置爲 false,每次調用該文件都將被重新包含.

如果設置了 assign 屬性,該屬性對應的變量名用於保存待包含 php 的輸出,這樣待包含 php 文件的輸出就不會直接顯示了。

在待包含 php 文件中可以通過 $this 訪問 smarty 對象.

Example 7-9. function include_php
例 7-9. include_php 函數演示

load_nav.php

query("select \* from site\_nav\_sections order by name",SQL\_ALL); $this->assign('sections',$sql->record); ?>

index.tpl

{* absolute path, or relative to $trusted_dir *}
{* 絕對路徑或 $trusted_dir 的相對路徑 *}
{include_php file="/path/to/load_nav.php"}

{foreach item="curr_section" from=$sections}
{$curr_section.name}

{/foreach}