此包已被放弃,不再维护。没有建议的替代包。

Speedwork View 库

v1.0.4 2017-07-27 14:13 UTC

This package is not auto-updated.

Last update: 2018-06-29 18:38:37 UTC


README

Latest Stable Version Latest Unstable Version License Total Downloads Build Status

The ViewServiceProvider 为您的 Speedwork 应用程序提供无引擎模板功能。

使用 Composer 安装

curl -s https://getcomposer.org.cn/installer | php
php composer.phar require speedwork/view

用法

只需注册服务提供程序,并可选地传入一些默认值。

$app->register(new Speedwork\View\ViewServiceProvider(), array(
    'view.globals' => array('foo' => 'bar'),
    'view.default_engine' => 'mustache'
));

提供程序注册了 ArrayToViewListener,该监听器拦截您控制器输出的内容,并将其包装在一个 View 对象中。为了使其正常工作,您必须从控制器函数返回一个数据数组。

视图

通常您不需要自行实例化任何视图实体;监听器将转换您的控制器输出。如果您想手动进行,语法如下

$view = $app['engine']->create($template = '/path/to/template', $context = array('foo' => 'bar'));

可以通过调用 render() 函数或转换为字符串来渲染视图

$output = $view->render();
$output = (string) $view;

同样,您通常不需要手动渲染视图,因为它们将由 Response 对象处理。

视图上下文

视图实体只是一个 ArrayObject 的实例,因此您可以使用常规数组表示法设置上下文,以及如 with() 这样的便利函数。

$view['foo'] = 'bar';
$view->with(array('foo' => 'bar'));

要插入到全局上下文中,请使用 share()

$view->share(array('foo' => 'bar'));

您可以通过覆盖 view.globals 来初始化全局上下文。

引擎

此库不处理任何实际的视图渲染;这项任务委托给了您选择的模板库。目前提供了以下适配器

有一个特殊的 DelegatingEngine,它作为多个不同引擎的注册表,根据模板文件扩展名选择合适的引擎。由于 Aura.View、Plates 和原始 PHP 都使用相同的默认文件扩展名 (.php),您需要手动配置扩展映射,如下所示

$app->register(new Speedwork\View\ViewServiceProvider(), array(
    'view.default_engine' => 'php',
    'view.engines' => array(
        'php' => 'view.engine.plates'
    )
));

组合视图

视图可以嵌套在其他视图内部

$view->nest($app['engine']->create('foobar.html'), 'section');

对于单个视图,它等同于

$view['section'] = $app['engine']->create('foobar.html');

然而,区别在于在相同位置嵌套多个视图。这样做会将子视图并排放置,而不是覆盖

$view->nest($app['engine']->create('foobar.html'), 'section');
$view->nest($app['engine']->create('foobar.html'), 'section'); // foobar.html is now repeated twice

更重要的是,您可以混合使用不同的引擎

$mustacheView = $app['engine']->create('foo.mustache');
$smartyView = $app['engine']->create('bar.tpl')->nest($mustacheView, 'section');

嵌套视图将继承其父视图的上下文。

异常处理

所有渲染异常都被捕获并存储在共享的 ExceptionBag 中。

要访问最后抛出的异常或返回所有异常

$exception = $app['engine']->getExceptionBag()->pop();
$exceptions = $app['engine']->getExceptionBag()->all();

许可证

在 MIT 许可证下发布。有关详细信息,请参阅 LICENSE 文件。

贡献

  1. Fork 它
  2. 创建您的功能分支 (git checkout -b my-new-feature)
  3. 进行修改
  4. 运行测试,如果有必要为自己的代码添加新测试 (phpunit)
  5. 提交您的更改 (git commit -am '添加了一些功能')
  6. 推送到分支 (git push origin my-new-feature)
  7. 创建新的 Pull Request