View Parser可以對(duì)視圖文件中包含的偽變量執(zhí)行簡(jiǎn)單的文本替換。它可以解析簡(jiǎn)單變量或變量標(biāo)簽對(duì)。
偽變量名稱(chēng)或控件構(gòu)造用大括號(hào)括起來(lái),如下所示:
<html>
<head>
<title>{blog_title}</title>
</head>
<body>
<h3>{blog_heading}</h3>
{blog_entries}
<h5>{title}</h5>
<p>{body}</p>
{/blog_entries}
</body>
</html>
這些變量不是實(shí)際的PHP變量,而是純文本表示形式,使您可以從模板(查看文件)中消除PHP。
注解
CodeIgniter也不會(huì)要求你使用這個(gè)類(lèi),因?yàn)椋ㄊ褂美缭谀囊晥D頁(yè)面使用純PHP 視圖渲染器)讓他們跑快一點(diǎn)。但是,如果開(kāi)發(fā)人員與認(rèn)為使用PHP會(huì)感到有些困惑的設(shè)計(jì)師合作,則他們更喜歡使用某種形式的模板引擎。
加載解析器類(lèi)的最簡(jiǎn)單方法是通過(guò)其服務(wù):
$parser = \Config\Services::parser();
或者,如果您不使用Parser
該類(lèi)作為默認(rèn)渲染器,則可以直接實(shí)例化它:
$parser = new \CodeIgniter\View\Parser();
然后,您可以使用它提供的三種標(biāo)準(zhǔn)渲染方法中的任何一種: render(viewpath,options,save),setVar(name,value,context)和 setData(data,context)。您還可以通過(guò)setDelimiters(left,right)方法直接指定定界符。
使用Parser
,您的視圖模板僅由解析器本身處理,而不像常規(guī)的視圖PHP腳本那樣處理。解析器將忽略此類(lèi)腳本中的PHP代碼,并且僅執(zhí)行替換。
這是有目的的:查看沒(méi)有PHP的文件。
該Parser
級(jí)的流程“PHP / HTML腳本”存儲(chǔ)在應(yīng)用程序的視圖路徑。這些腳本不能包含任何PHP。
每個(gè)視圖參數(shù)(我們稱(chēng)為偽變量)都會(huì)根據(jù)您為其提供的值的類(lèi)型觸發(fā)替換。偽變量不會(huì)提取到PHP變量中;相反,它們的值通過(guò)偽變量語(yǔ)法訪(fǎng)問(wèn),其中其名稱(chēng)在花括號(hào)內(nèi)引用。
Parser類(lèi)在內(nèi)部使用關(guān)聯(lián)數(shù)組,以累積偽變量設(shè)置,直到調(diào)用它為止render()
。這意味著您的偽變量名稱(chēng)必須唯一,否則后面的參數(shù)設(shè)置將覆蓋以前的參數(shù)。
這還會(huì)影響腳本中不同上下文的轉(zhuǎn)義參數(shù)值。您將必須為每個(gè)轉(zhuǎn)義的值賦予唯一的參數(shù)名稱(chēng)。
您可以使用該render()
方法來(lái)解析(或渲染)簡(jiǎn)單的模板,如下所示:
$data = [
'blog_title' => 'My Blog Title',
'blog_heading' => 'My Blog Heading'
];
echo $parser->setData($data)
->render('blog_template');
視圖參數(shù)setData()
作為要在模板中替換的數(shù)據(jù)的關(guān)聯(lián)數(shù)組傳遞到。在上面的示例中,模板將包含兩個(gè)變量:{blog_title}和{blog_heading}第一個(gè)參數(shù)render()
包含視圖文件的名稱(chēng),其中blog_template是視圖文件的名稱(chēng)。
重要
如果省略文件擴(kuò)展名,則視圖應(yīng)以.php擴(kuò)展名結(jié)尾。
可以將幾個(gè)選項(xiàng)傳遞給render()
或renderString()
方法。
cache
-保存視圖結(jié)果的時(shí)間(以秒為單位);對(duì)renderString()忽略cache_name
-用于保存/檢索緩存的視圖結(jié)果的ID;默認(rèn)為viewpath;對(duì)renderString()忽略
saveData
-如果應(yīng)為隨后的調(diào)用保留視圖數(shù)據(jù)參數(shù),則為true。默認(rèn)為false
cascadeData
-如果應(yīng)將偽變量設(shè)置傳遞給嵌套,則為true替代; 默認(rèn)為true
echo $parser->render('blog_template', [
'cache' => HOUR,
'cache_name' => 'something_unique',
]);
支持三種類(lèi)型的替換:簡(jiǎn)單,循環(huán)和嵌套。替換按照添加偽變量的相同順序執(zhí)行。
解析器執(zhí)行的簡(jiǎn)單替換是偽變量的一對(duì)一替換,其中對(duì)應(yīng)的數(shù)據(jù)參數(shù)具有標(biāo)量或字符串值,如本例所示:
$template = '<head><title>{blog_title}</title></head>';
$data = ['blog_title' => 'My ramblings'];
echo $parser->setData($data)->renderString($template);
// Result: <head><title>My ramblings</title></head>
在Parser
用“可變對(duì)”,用于嵌套取代或循環(huán),并用一些先進(jìn)的構(gòu)建體用于條件替代很多進(jìn)一步需要替換。
解析器執(zhí)行時(shí),通常
當(dāng)偽變量的值是數(shù)組的順序數(shù)組(如行設(shè)置的數(shù)組)時(shí),將發(fā)生循環(huán)替換。
上面的示例代碼允許替換簡(jiǎn)單變量。如果您希望重復(fù)整個(gè)變量塊,而每次迭代都包含新值,該怎么辦?考慮一下我們?cè)陧?yè)面頂部顯示的模板示例:
<html>
<head>
<title>{blog_title}</title>
</head>
<body>
<h3>{blog_heading}</h3>
{blog_entries}
<h5>{title}</h5>
<p>{body}</p>
{/blog_entries}
</body>
</html>
在上面的代碼中,您會(huì)注意到一對(duì)變量:{blog_entries} data…{/ blog_entries}。在這種情況下,這些對(duì)之間的整個(gè)數(shù)據(jù)塊將重復(fù)多次,這與參數(shù)數(shù)組的“ blog_entries”元素中的行數(shù)相對(duì)應(yīng)。
解析變量對(duì)使用與上面顯示的相同的代碼來(lái)解析單個(gè)變量,但是,您將添加一個(gè)與變量對(duì)數(shù)據(jù)相對(duì)應(yīng)的多維數(shù)組??紤]以下示例:
$data = [
'blog_title' => 'My Blog Title',
'blog_heading' => 'My Blog Heading',
'blog_entries' => [
['title' => 'Title 1', 'body' => 'Body 1'],
['title' => 'Title 2', 'body' => 'Body 2'],
['title' => 'Title 3', 'body' => 'Body 3'],
['title' => 'Title 4', 'body' => 'Body 4'],
['title' => 'Title 5', 'body' => 'Body 5']
]
];
echo $parser->setData($data)
->render('blog_template');
偽變量的值blog_entries
是關(guān)聯(lián)數(shù)組的順序數(shù)組。外層沒(méi)有與每個(gè)嵌套“行”關(guān)聯(lián)的鍵。
如果您的“對(duì)”數(shù)據(jù)來(lái)自數(shù)據(jù)庫(kù)結(jié)果(已經(jīng)是一個(gè)多維數(shù)組),則可以簡(jiǎn)單地使用數(shù)據(jù)庫(kù)getResultArray()
方法:
$query = $db->query("SELECT * FROM blog");
$data = [
'blog_title' => 'My Blog Title',
'blog_heading' => 'My Blog Heading',
'blog_entries' => $query->getResultArray()
];
echo $parser->setData($data)
->render('blog_template');
如果您要循環(huán)的數(shù)組包含對(duì)象而不是數(shù)組,則解析器將首先asArray
在對(duì)象上查找方法。如果存在,則將調(diào)用該方法,然后如上所述將結(jié)果數(shù)組循環(huán)。如果不asArray
存在任何方法,則該對(duì)象將被強(qiáng)制轉(zhuǎn)換為數(shù)組,并且其公共屬性將對(duì)解析器可用。
這對(duì)于Entity類(lèi)尤其有用,它具有一個(gè)asArray方法,該方法返回所有公共和受保護(hù)的屬性(減去_options屬性),并使它們對(duì)解析器可用。
當(dāng)偽變量的值是值的關(guān)聯(lián)數(shù)組(例如數(shù)據(jù)庫(kù)中的記錄)時(shí),就會(huì)發(fā)生嵌套替換:
$data = [
'blog_title' => 'My Blog Title',
'blog_heading' => 'My Blog Heading',
'blog_entry' => [
'title' => 'Title 1', 'body' => 'Body 1'
]
];
echo $parser->setData($data)
->render('blog_template');
偽變量的值blog_entry
是一個(gè)關(guān)聯(lián)數(shù)組。在其中定義的鍵/值對(duì)將在該變量的變量對(duì)循環(huán)內(nèi)公開(kāi)。
A blog_template
可能適用于上述情況:
<h1>{blog_title} - {blog_heading}</h1>
{blog_entry}
<div>
<h2>{title}</h2>
<p>{body}</p>
</div>
{/blog_entry}
如果您希望在“ blog_entry”范圍內(nèi)可以訪(fǎng)問(wèn)其他偽變量,請(qǐng)確保將“ cascadeData”選項(xiàng)設(shè)置為true。
您可以通過(guò)將注釋包裝在符號(hào)中來(lái)在模板中放置將被忽略和刪除的注釋。{# #}
{# This comment is removed during parsing. #}
{blog_entry}
<div>
<h2>{title}</h2>
<p>{body}</p>
</div>
{/blog_entry}
通過(guò)嵌套和循環(huán)替換,您可以選擇將數(shù)據(jù)對(duì)級(jí)聯(lián)到內(nèi)部替換中。
以下示例不受級(jí)聯(lián)的影響:
$template = '{name} lives in {location}{city} on {planet}{/location}.';
$data = [
'name' => 'George',
'location' => [ 'city' => 'Red City', 'planet' => 'Mars' ]
];
echo $parser->setData($data)->renderString($template);
// Result: George lives in Red City on Mars.
此示例根據(jù)級(jí)聯(lián)給出不同的結(jié)果:
$template = '{location}{name} lives in {city} on {planet}{/location}.';
$data = [
'name' => 'George',
'location' => [ 'city' => 'Red City', 'planet' => 'Mars' ]
];
echo $parser->setData($data)->renderString($template, ['cascadeData'=>false]);
// Result: {name} lives in Red City on Mars.
echo $parser->setData($data)->renderString($template, ['cascadeData'=>true]);
// Result: George lives in Red City on Mars.
您可以指定頁(yè)面的某些部分不使用{noparse}{/noparse}
標(biāo)記對(duì)進(jìn)行解析。本節(jié)中的所有內(nèi)容將保持原樣,并且括號(hào)之間的標(biāo)記不會(huì)發(fā)生任何變量替換,循環(huán)等。
{noparse}
<h1>Untouched Code</h1>
{/noparse}
解析器類(lèi)支持一些基本的條件語(yǔ)句來(lái)處理if
,else
和elseif
語(yǔ)法。所有if
塊必須使用endif
標(biāo)簽關(guān)閉:
{if $role=='admin'}
<h1>Welcome, Admin!</h1>
{endif}
在解析過(guò)程中,此簡(jiǎn)單塊將轉(zhuǎn)換為以下內(nèi)容:
<?php if ($role=='admin'): ?>
<h1>Welcome, Admin!</h1>
<?php endif ?>
if語(yǔ)句中使用的所有變量必須事先設(shè)置為相同的名稱(chēng)。除此之外,它被完全視為標(biāo)準(zhǔn)PHP條件,所有標(biāo)準(zhǔn)PHP規(guī)則都將在此處適用。你可以使用任何比較運(yùn)算符你通常會(huì)一樣的==
,===
,!==
,<
,>
,等。
{if $role=='admin'}
<h1>Welcome, Admin</h1>
{elseif $role=='moderator'}
<h1>Welcome, Moderator</h1>
{else}
<h1>Welcome, User</h1>
{endif}
注解
在后臺(tái),使用eval()解析條件語(yǔ)句,因此您必須確保注意在條件語(yǔ)句中使用的用戶(hù)數(shù)據(jù),否則可能會(huì)使應(yīng)用程序面臨安全風(fēng)險(xiǎn)。
默認(rèn)情況下,所有變量替換均被轉(zhuǎn)義,以幫助防止對(duì)頁(yè)面進(jìn)行XSS攻擊。CodeIgniter的esc
方法支持幾種不同的上下文,例如常規(guī) html ,如果它位于HTML attr 中,則位于 css 等中。如果未指定其他內(nèi)容,則將假定數(shù)據(jù)位于HTML上下文中。您可以使用 esc 過(guò)濾器指定使用的上下文:
{ user_styles | esc(css) }
<a href="{ user_link | esc(attr) }">{ title }</a>
有時(shí)候,您絕對(duì)需要使用某些東西而又不能逃脫。您可以通過(guò)在左括號(hào)和右括號(hào)中添加感嘆號(hào)來(lái)做到這一點(diǎn):
{! unescaped_var !}
任何單個(gè)變量替換都可以應(yīng)用一個(gè)或多個(gè)過(guò)濾器以修改其表示方式。這些并不是要大幅度改變輸出,而是提供重用相同變量數(shù)據(jù)但使用不同表示的方法。上面討論的esc過(guò)濾器是一個(gè)示例。日期是另一個(gè)常見(jiàn)用例,您可能需要在同一頁(yè)面上的多個(gè)部分中以不同的方式設(shè)置相同數(shù)據(jù)的格式。
過(guò)濾器是偽變量名稱(chēng)之后的命令,并用豎線(xiàn)符號(hào)分隔|
:
// -55 is displayed as 55
{ value|abs }
如果參數(shù)接受任何參數(shù),則必須用逗號(hào)分隔并用括號(hào)括起來(lái):
{ created_at|date(Y-m-d) }
通過(guò)將多個(gè)過(guò)濾器管道連接在一起,可以將多個(gè)過(guò)濾器應(yīng)用于該值。它們從左到右依次處理:
{ created_at|date_modify(+5 days)|date(Y-m-d) }
使用解析器時(shí),可以使用以下過(guò)濾器:
Filter | Arguments | Description | Example |
---|---|---|---|
abs | 顯示數(shù)字的絕對(duì)值。 | { v/abs } | |
capitalize | 在以下情況下顯示字符串:首字母大寫(xiě)的所有小寫(xiě)字母。 | { v/capitalize} | |
date | format (Y-m-d) | PHP 日期兼容的格式字符串。 | { v/date(Y-m-d) } |
date_modify | value to add / subtract | 與strtotime兼容的字符串,用于修改日期,例如或。+5 day``-1 week |
{ v/date_modify(+1 day) } |
default | default value | 如果變量為空或未定義,則顯示默認(rèn)值。 | { v/default(just in case) } |
esc | html, attr, css, js | 指定用于轉(zhuǎn)義數(shù)據(jù)的上下文。 | { v/esc(attr) } |
excerpt | phrase, radius | 返回給定短語(yǔ)中單詞半徑內(nèi)的文本。與摘錄助手功能相同。 | { v/excerpt(green giant, 20) } |
highlight | phrase | 使用“ <mark> </ mark>”標(biāo)簽突出顯示文本中的給定短語(yǔ)。 | { v/highlight(view parser) } |
highlight_code | 用HTML / CSS突出顯示代碼示例。 | { v/highlight_code } | |
limit_chars | limit | 將字符數(shù)限制為$ limit。 | { v/limit_chars(100) } |
limit_words | limit | 將字?jǐn)?shù)限制為$ limit。 | { v/limit_words(20) } |
local_currency | currency, locale | 顯示貨幣的本地化版本。“貨幣”值是任何3個(gè)字母的ISO 4217貨幣代碼。 | { v/local_currency(EUR,en_US) } |
local_number | type, precision, locale | 顯示數(shù)字的本地化版本?!邦?lèi)型”可以是以下之一:小數(shù),貨幣,百分比,科學(xué),拼寫(xiě),序數(shù),持續(xù)時(shí)間。 | { v/local_number(decimal,2,en_US) } |
lower | 將字符串轉(zhuǎn)換為小寫(xiě)。 | { v/lower } | |
nl2br | 將所有換行符(n)替換為HTML <br/>標(biāo)記。 | { v/nl2br } | |
number_format | places | 包裝PHP number_format函數(shù)以在解析器中使用。 | { v/number_format(3) } |
prose | 接受一段文字,并使用auto_typography() 方法將其轉(zhuǎn)換為更漂亮,更易于閱讀的散文。 | { v/prose } | |
round | places, type | 將數(shù)字四舍五入到指定位置。可以傳遞ceil 和floor類(lèi)型來(lái)使用這些功能。 | { v/round(3) } { v/round(ceil) } |
strip_tags | allowed chars | 包裝PHP strip_tags??梢越邮芤淮试S的標(biāo)簽。 | { v/strip_tags( ) } |
title | 顯示字符串的“標(biāo)題大小寫(xiě)”版本,所有字母均小寫(xiě),每個(gè)單詞均大寫(xiě)。 | { v/title } | |
upper | 以大寫(xiě)形式顯示字符串。 | { v/upper } |
有關(guān)“ local_number”過(guò)濾器的詳細(xì)信息,請(qǐng)參見(jiàn)PHP的NumberFormatter。
您可以通過(guò)編輯app / Config / View.php并將新條目添加到 $filters
數(shù)組中來(lái)輕松創(chuàng)建自己的過(guò)濾器。每個(gè)鍵都是在視圖中由調(diào)用的過(guò)濾器的名稱(chēng),其值是任何可調(diào)用的有效PHP:
public $filters = [
'abs' => '\CodeIgniter\View\Filters::abs',
'capitalize' => '\CodeIgniter\View\Filters::capitalize',
];
您可以通過(guò)編輯app / Config / View.php并將新條目添加到 $filters
數(shù)組中來(lái)使用本機(jī)php函數(shù)作為過(guò)濾器,每個(gè)鍵是在視圖中調(diào)用by的本機(jī)PHP函數(shù)的名稱(chēng),其值是任何有效的本機(jī)PHP功能前綴:
public $filters = [
'str_repeat' => '\str_repeat',
];
插件允許您擴(kuò)展解析器,為每個(gè)項(xiàng)目添加自定義功能。它們可以是任何可調(diào)用的PHP,使其易于實(shí)現(xiàn)。在模板內(nèi),插件由標(biāo)簽指定:{+ +}
{+ foo +} inner content {+ /foo +}
此示例顯示了一個(gè)名為foo的插件。它可以在其開(kāi)始標(biāo)記和結(jié)束標(biāo)記之間操縱任何內(nèi)容。在此示例中,它可以使用文本“內(nèi)部?jī)?nèi)容”。在進(jìn)行任何偽變量替換之前,將處理插件。
盡管插件通常由標(biāo)簽對(duì)組成,如上所示,但它們也可以是單個(gè)標(biāo)簽,沒(méi)有結(jié)束標(biāo)簽:
{+ foo +}
開(kāi)頭標(biāo)簽還可以包含可以自定義插件工作方式的參數(shù)。參數(shù)表示為鍵/值對(duì):
{+ foo bar=2 baz="x y" }
參數(shù)也可以是單個(gè)值:
{+ include somefile.php +}
使用解析器時(shí),可以使用以下插件:
Plugin | Arguments | Description | Example |
---|---|---|---|
current_url | current_url輔助函數(shù)的別名。 | {+ current_url +} | |
previous_url | previous_url輔助函數(shù)的別名。 | {+ previous_url +} | |
siteURL | site_url幫助器功能的別名。 | {+ siteURL “l(fā)ogin” +} | |
mailto | email, title, attributes | mailto助手功能的別名。 | {+ mailto email=foo@example.com title=”Stranger Things” +} |
safe_mailto | email, title, attributes | safe_mailto幫助程序功能的別名。 | {+ safe_mailto email=foo@example.com title=”Stranger Things” +} |
lang | language string | lang助手功能的別名。 | {+ lang number.terabyteAbbr +} |
validation_errors | fieldname(optional) | 返回該字段的錯(cuò)誤字符串(如果已指定)或所有驗(yàn)證錯(cuò)誤。 | {+ validation_errors +} , {+ validation_errors field=”email” +} |
route | route name | route_to輔助函數(shù)的別名。 | {+ route “l(fā)ogin” +} |
最簡(jiǎn)單的方法是,注冊(cè)一個(gè)新插件并準(zhǔn)備使用,只需將其添加到 $ plugins數(shù)組下的app / Config / View.php中。密鑰是模板文件中使用的插件的名稱(chēng)。該值是任何可調(diào)用的有效PHP,包括靜態(tài)類(lèi)方法和閉包:
public $plugins = [
'foo' => '\Some\Class::methodName',
'bar' => function($str, array $params=[]) {
return $str;
},
];
必須在配置文件的構(gòu)造函數(shù)中定義正在使用的所有閉包:
class View extends \CodeIgniter\Config\View
{
public $plugins = [];
public function __construct()
{
$this->plugins['bar'] = function(array $params=[]) {
return $params[0] ?? '';
};
parent::__construct();
}
}
如果可調(diào)用項(xiàng)是單獨(dú)的,則將其視為單個(gè)標(biāo)簽,而不是打開(kāi)/關(guān)閉標(biāo)簽。它將由插件的返回值替換:
public $plugins = [
'foo' => '\Some\Class::methodName'
];
// Tag is replaced by the return value of Some\Class::methodName static function.
{+ foo +}
如果可調(diào)用對(duì)象包裝在數(shù)組中,則將其視為可以在其標(biāo)簽之間的任何內(nèi)容上進(jìn)行操作的打開(kāi)/關(guān)閉標(biāo)簽對(duì):
public $plugins = [
'foo' => ['\Some\Class::methodName']
];
{+ foo +} inner content {+ /foo +}
如果您包含模板中未引用的替換參數(shù),則將忽略它們:
$template = 'Hello, {firstname} {lastname}';
$data = [
'title' => 'Mr',
'firstname' => 'John',
'lastname' => 'Doe'
];
echo $parser->setData($data)
->renderString($template);
// Result: Hello, John Doe
如果您不包含模板中引用的替換參數(shù),則結(jié)果中將顯示原始的偽變量:
$template = 'Hello, {firstname} {initials} {lastname}';
$data = [
'title' => 'Mr',
'firstname' => 'John',
'lastname' => 'Doe'
];
echo $parser->setData($data)
->renderString($template);
// Result: Hello, John {initials} Doe
如果在需要數(shù)組時(shí)(例如,對(duì)變量對(duì))提供字符串替換參數(shù),那么將對(duì)開(kāi)頭變量對(duì)標(biāo)記進(jìn)行替換,但是結(jié)尾變量對(duì)標(biāo)記無(wú)法正確呈現(xiàn):
$template = 'Hello, {firstname} {lastname} ({degrees}{degree} {/degrees})';
$data = [
'degrees' => 'Mr',
'firstname' => 'John',
'lastname' => 'Doe',
'titles' => [
['degree' => 'BSc'],
['degree' => 'PhD']
]
];
echo $parser->setData($data)
->renderString($template);
// Result: Hello, John Doe (Mr{degree} {/degrees})
您不必使用變量對(duì)就可以在視圖中獲得迭代的效果。可以將視圖片段用于變量對(duì)內(nèi)部,并可以在控制器中而不是視圖中控制迭代。
在視圖中控制迭代的示例:
$template = '<ul>{menuitems}
<li><a href="{link}">{title}</a></li>
{/menuitems}</ul>';
$data = [
'menuitems' => [
['title' => 'First Link', 'link' => '/first'],
['title' => 'Second Link', 'link' => '/second'],
]
];
echo $parser->setData($data)
->renderString($template);
結(jié)果:
<ul>
<li><a href="/first">First Link</a></li>
<li><a href="/second">Second Link</a></li>
</ul>
一個(gè)使用視圖片段在控制器中控制迭代的示例:
$temp = '';
$template1 = '<li><a href="{link}">{title}</a></li>';
$data1 = [
['title' => 'First Link', 'link' => '/first'],
['title' => 'Second Link', 'link' => '/second'],
];
foreach ($data1 as $menuItem)
{
$temp .= $parser->setData($menuItem)->renderString($template1);
}
$template2 = '<ul>{menuitems}</ul>';
$data = [
'menuitems' => $temp
];
echo $parser->setData($data)
->renderString($template2);
結(jié)果:
<ul>
<li><a href="/first">First Link</a></li>
<li><a href="/second">Second Link</a></li>
</ul>
CodeIgniter\View\Parser
render
($ view [,$ options [,$ saveData = false]]] )
參數(shù): | $ view(string)–視圖源的文件名 |
---|---|
$ options(array)– **選項(xiàng)**數(shù)組,作為鍵/值對(duì) | |
$ saveData(boolean)–如果為true,則將保存數(shù)據(jù)以供任何其他調(diào)用使用;如果為false,則在渲染視圖后將清理數(shù)據(jù)。 | |
返回: | 所選視圖的渲染文本 |
返回類(lèi)型: | 串 |
根據(jù)文件名和任何已設(shè)置的數(shù)據(jù)構(gòu)建輸出:
echo $parser->render('myview');
支持的選項(xiàng):
cache
-保存視圖結(jié)果的時(shí)間(以秒為單位)cache_name
-用于保存/檢索緩存的視圖結(jié)果的ID;默認(rèn)為viewpathcascadeData
-如果應(yīng)傳播發(fā)生嵌套或循環(huán)替換時(shí)有效的數(shù)據(jù)對(duì),則為truesaveData
-如果應(yīng)保留視圖數(shù)據(jù)參數(shù)以供后續(xù)調(diào)用,則為trueleftDelimiter
-用于偽變量語(yǔ)法的左定界符rightDelimiter
-在偽變量語(yǔ)法中使用的正確定界符首先執(zhí)行任何條件替換,然后為每個(gè)數(shù)據(jù)對(duì)執(zhí)行其余替換。
renderString
($ template [,$ options [,$ saveData = false]]] )
參數(shù): | $ template(string)–查看以字符串形式提供的源代碼 |
---|---|
$ options(array)– **選項(xiàng)**數(shù)組,作為鍵/值對(duì) | |
$ saveData(boolean)–如果為true,則將保存數(shù)據(jù)以供任何其他調(diào)用使用;如果為false,則在渲染視圖后將清理數(shù)據(jù)。 | |
返回: | 所選視圖的渲染文本 |
返回類(lèi)型: | 串 |
根據(jù)提供的模板源和任何已設(shè)置的數(shù)據(jù)來(lái)構(gòu)建輸出:
echo $parser->render('myview');
支持的選項(xiàng)和行為如上所述。
setData
([$data[,$ context = null]])
參數(shù): | $ data(array)–視圖數(shù)據(jù)字符串的數(shù)組,作為鍵/值對(duì) |
---|---|
$ context(string)–用于數(shù)據(jù)轉(zhuǎn)義的上下文。 | |
返回: | 渲染器,用于方法鏈接 |
返回類(lèi)型: | CodeIgniter \ View \ RendererInterface。 |
一次設(shè)置幾條視圖數(shù)據(jù):
$renderer->setData(['name'=>'George', 'position'=>'Boss']);
支持的轉(zhuǎn)義上下文:html,css,js,url或attr或raw。
如果“原始”,將不會(huì)發(fā)生轉(zhuǎn)義。
setVar
($name[,$ value = null[,$ context = null]])
參數(shù): | $ name(string)–視圖數(shù)據(jù)變量的名稱(chēng) |
---|---|
$ value(mixed)–此視圖數(shù)據(jù)的值 | |
$ context(string)–用于數(shù)據(jù)轉(zhuǎn)義的上下文。 | |
返回: | 渲染器,用于方法鏈接 |
返回類(lèi)型: | CodeIgniter \ View \ RendererInterface。 |
設(shè)置單個(gè)視圖數(shù)據(jù):
$renderer->setVar('name','Joe','html');
支持的轉(zhuǎn)義上下文:html,css,js,url,attr或raw。
如果“原始”,將不會(huì)發(fā)生轉(zhuǎn)義。
setDelimiters
($ leftDelimiter ='{',$ rightDelimiter ='}' )
參數(shù): | $ leftDelimiter(string)–替換字段的左定界符 |
---|---|
$ rightDelimiter(string)–替換字段的右定界符 | |
返回: | 渲染器,用于方法鏈接 |
返回類(lèi)型: | CodeIgniter \ View \ RendererInterface。 |
替代替換字段定界符:
$renderer->setDelimiters('[',']');
更多建議: