drarok / kotal
PHPTAL 模板用于 Kohana
Requires
- phptal/phptal: dev-master
This package is auto-updated.
Last update: 2024-08-29 04:08:56 UTC
README
KOtal 是一个 Kohana 3.3 的模块,它将 PHPTAL 实现为一个视图处理器。
PHPTAL 是 Zope 页面模板(ZPT)的 PHP 实现。简单来说,PHPTAL 是一个 XML/XHTML 模板库,用于 PHP。
最初由 Hanson Wong 创建,此分支增加了以下功能
- Kohana 3.3 的支持。
- 通过 Composer 安装的支持。
- 默认文件扩展名为 xhtml。
通过 Composer 安装
composer.json
{ "require": { "drarok/kotal": "dev-develop" } }
bootstrap.php
Kohana::modules(array( 'kotal' => MODPATH . 'kotal', ));
用法
在正常的 application/views 目录中创建视图,但使用 xhtml 扩展名,并遵循 TAL 语法和规则。
KOtal 还将 i18n 请求路由到 Kohana 的原生方法。
下面有一些“高级”选项,将在以下示例中展示。
示例
首先,创建一个名为 taltest.xhtml 的新视图文件,并将其放置在 views/ 目录下。
<?xml version="1.0"?>
<tal:block
xmlns="http://www.w3.org/1999/xhtml"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
xmlns:phptal="http://phptal.org/ns/phptal"
>
<h1 tal:content="title">Sample Title - Not Output</h1>
<p tal:repeat="person people" tal:content="person">Example Name - Not Output</p>
</tal:block>
然后在您的控制器中,添加以下代码以生成并显示您的视图。
$view = View::factory('taltest');
$people = array(
'Alan',
'Bob',
'Jane',
'Maria'
);
$view->title = 'People';
$view->people = $people;
$this->response->body($view);
访问此操作时,您应该看到
People
Alan
Bob
Jane
Maria
现在假设我们不想用 'xhtml' 扩展名存储 TAL 视图。我们想使用 'html'。只需更改视图的扩展名并在 config/kotal.php 中更改选项。
'ext' => 'html',
这是一个全局设置,将影响所有通过 KOtal 生成的视图。
接下来,我们想更改 KOtal 输出文档的方式。很简单。有两个相关的方法。
$view->set_output_mode(PHPTAL::XHTML)
->set_encoding('utf-8');
这些是默认设置,有关可用选项,请参阅 PHPTAL 文档。
假设您正在将 TAL 从中间切换,并且一些视图尚未转换。不用担心,我们可以仅按视图禁用 TAL 处理。
$view->use_tal(FALSE);
最后,其他在 Kohana 默认处理器中出现的功能也应该在 KOtal 中工作,例如方法链和设置渲染前的视图文件路径。因此,我们的最终示例代码可以是
$view = View::factory()
->set_output_mode(PHPTAL::XHTML)
->set_encoding('utf-8')
->set(array(
'people' => array(
'Alan',
'Bob',
'Jane',
'Maria'
),
'title' => 'People'
))
->set_filename('taltest');
$this->response->body($view);
注意事项
由于 KOtal 覆盖了 Kohana 的默认视图处理器,因此使用“正常”视图的模块最初会失败。您可以通过在 config/kotal.php 中使用控制器排除列表来修复此问题。只需将控制器名称(在 routes 中定义)放入。
'exclude' => array(
'codebench',
'unittest',
'userguide',
),
或者,您可以在 config/kotal.php 中全局禁用 KOtal。
'enabled' => FALSE,
然后,在将每个视图转换为 TAL 时,您可以针对该视图开启 KOtal。
$view->use_tal(TRUE);
一旦所有视图都已升级以使用 PHPTAL,您就可以全局开启 KOtal 并删除所有 use_tal(TRUE) 调用。
随 Kohana 3.3 默认提供的模块已包含在默认 KOtal 配置中。
其他
KOtal 使用新 BSD 许可证授权。感谢 zombor 的 KOstache 为初始灵感和命名提供了灵感。
PHPTAL 使用 GNU Lesser General Public License 的条款授权。
有关创建 TAL 视图的更多具体文档,请参阅 PHPTAL 网站。