内置助手
Zend Framework 为各种目的提供了许多内置的帮助程序函数。zend-mvc 中可用的一些视图帮助程序如下所示 −
URL
URL 帮助程序用于生成与应用程序中定义的路由匹配的 URL。
URL 帮助程序的定义是 −
$this->url($name, $params, $options, $reuseMatchedParameters)
例如,在tutorial模块中,路由被命名为 tutorial,它有两个参数 action 和 id。我们可以使用URL帮助程序生成两个不同的URL,如下所示 -
<a href = "<? = $this->url('tutorial'); ?>">Tutorial Index</a>
<a href = "<? = $this->url('tutorial', ['action' => 'show', 'id' =>10]); ?>">
Details of Tutorial #10
</a>
结果将如下所示 −
<a href = "/tutorial">Tutorial Index</a>
<a href = "/tutorial/show/10"> Details of Tutorial #10</a>
Placeholder
Placeholder 帮助程序用于在视图脚本和视图实例之间保留内容。它提供了最初设置数据,然后在后续阶段使用它的选项。
例如,我们可以设置,输出companyname,然后在所有其他地方使用它。
<?php $this->placeholder('companyname')->set("jc2182") ?>
<?= $this->placeholder('companyname'); ?>
Placeholder 提供了一些高级选项,用于从 PHP 数组和对象生成复杂内容。它还可以选择捕获模板本身的某些部分。
例如,下面的代码捕获介于 两者之间的模板结果,并将其存储在 productlist Placeholder 中。
类 – Product
class Product {
public $name;
public $description;
}
控制器
$p1 = new Product();
$p1->name = 'Car';
$p1->description = 'Car';
$p2 = new Product();
$p2->name = 'Cycle';
$p2->description = 'Cycle';
$view = new ViewModel(['products' => $products]);
模板
<!-- start capture -->
<?php $this->placeholder('productlist')->captureStart();
foreach ($this->products as $product): ?>
<div>
<h2><?= $product->name ?></h2>
<p><?= $product->description ?></p>
</div>
<?php endforeach; ?>
<?php $this->placeholder('productlist')->captureEnd() ?>
<!-- end capture -->
<?= $this->placeholder('productlist') ?>
结果
<div class = "foo">
<h2>Car</h2>
<p>Car</p>
</div>
<div class = "foo">
<h2>Cycle</h2>
<p>Cycle</p>
</div>
Doctype
Doctype 帮助程序用于生成各种 html 文档类型。它是Placeholder 帮助程序的具体实现。可以在引导程序文件和配置文件中设置文档类型。
基本用法如下图所示 −
应用程序引导程序文件
use Zend\View\Helper\Doctype;
$doctypeHelper = new Doctype();
$doctypeHelper->doctype('XHTML5');
模块配置
// module/Application/config/module.config.php:
return [
/* ... */
'view_manager' => [
'doctype' => 'html5',
/* ... */
],
];
模板
<?php echo $this->doctype() ?>
HeadTitle
HeadTitle 帮助程序用于生成 html 标题元素。它是Placeholder 帮助程序的具体实现。Zend提供了一个在模块配置文件中设置标题的选项,并且可以在任何级别(如站点,模块,控制器,操作等)进行设置。标题的部分代码如下 −
模块
headTitleHelper->append($action);
$headTitleHelper->append($controller);
$headTitleHelper->append($module);
$headTitleHelper->append($siteName);
模板
<?= $this->headTitle() ?>
结果
action - controller - module - Zend Framework
HeadMeta
HeadMeta 助手用于生成 html meta 标记。它是Placeholder 帮助程序的具体实现。
模板 −
<?php
$this->headMeta()->appendName('keywords', 'turorialspoint, zend framework, php');
echo $this->headMeta()
?>
结果
<meta name = "keywords" content = "jc2182, zend framework, php" />
HeadLink
HeadLink 帮助程序用于生成 html 链接以包含外部资源。它是Placeholder 帮助程序的具体实现。
模板
<?php
// setting links in a view script:
$this->headLink(['rel' => 'icon', 'href' => '/img/favicon.ico'], 'PREPEND')
->appendStylesheet('/styles/site.css')
->prependStylesheet('/styles/mystyle.css', 'screen', true, ['id' => 'mystyle']);
// rendering the links from the layout:
echo $this->headLink();
?>
结果
<link href = "/styles/mystyle.css" media = "screen" rel = "stylesheet"
type = "text/css" id = "mystyle">
<link href = "/img/favicon.ico" rel = "icon">
<link href = "/styles/site.css" media = "screen" rel = "stylesheet" type = "text/css">
HeadStyle
HeadStyle 帮助程序用于生成内联 CSS 样式。它是Placeholder 帮助程序的具体实现。
模板
<?php $this->headStyle()->appendStyle($styles); ?>
<?php echo $this->headStyle() ?>
HeadScript
HeadScript 用于生成内联脚本或包含外部脚本。它是Placeholder 帮助程序的具体实现。
模板
<? $this->headScript()->appendFile(‘/js/sample.js’);?>
<?php echo $this->headScript() ?>
InlineScript
InlineScript 用于在 html 模板的头部和正文部分中生成脚本。它派生自 HeadScript。
HTMLList
HTML 列表用于生成有序列表和无序列表。HTML列表的定义如下 -
定义
htmlList($items, $ordered, $attribs, $escape)
模板
$items = [
'2015',
['March', 'November'],
'2016',
];
echo $this->htmlList($items);
结果
<ul>
<li>2015
<ul>
<li>March</li>
<li>November</li>
</ul>
</li>
<li>2016</li>
</ul>
Cycle
Cycle 用于在循环环境中生成备选项。它具有赋值,下一个和上一个功能。
控制器
$view = new ViewModel(['message' => 'Hello, Tutorial', 'data' => array('One', 'Two')]);
模板
<?php $this->cycle()->assign(['#F0F0F0', '#FFF'], 'colors'); ?>
<table>
<?php foreach ($this->data as $datum): ?>
<tr style = "background-color: <?= $this->cycle()->setName('colors')>next() ?>">
<td><?= $this->escapeHtml($datum) ?></td>
</tr>
<?php endforeach ?>
</table>
结果
<table>
<tr style = "background-color: #F0F0F0">
<td>One</td>
</tr>
<tr style = "background-color: #FFF">
<td>Two</td>
</tr>
</table>
其他一些重要的内置助手如下 :
-
BasePath − 基本路径用于生成应用程序根目录的公用文件夹的路径。
-
Partial − 部分用于在自己的变量范围内呈现特定模板。
-
PartialLoop − 部分循环类似于部分,但在循环环境中使用。
-
Identity − 身份用于从身份验证服务中检索登录用户的身份。
-
JSON − JSON 在安静环境中使用,其中输出采用 JSON 格式。它会发出正确的 HTTP 标头并禁用布局概念。
Zend Framework 中仍然有很多助手可用,例如i18n助手,form 助手,pagination 助手,navigation 助手等。