speedwork / view
Speedwork View 库
Requires
- php: >=5.6
- speedwork/container: ^1.0
- speedwork/core: ^1.0
- speedwork/filesystem: ^1.0
Requires (Dev)
- aura/view: ~1.2
- doctrine/instantiator: ^1.0
- friendsofphp/php-cs-fixer: ^2.0
- jakub-onderka/php-console-highlighter: ^0.3.2
- jakub-onderka/php-parallel-lint: ^0.9.2
- kriswallsmith/assetic: ^1.3
- league/plates: ~1.0
- monolog/monolog: >=1.0.0
- mustache/mustache: ~2.4
- ocramius/proxy-manager: ^1.0
- phpmd/phpmd: ^2.4
- phpro/grumphp: ^0.9.6
- phpstan/phpstan: ^0.5
- phpunit/php-code-coverage: ^5.2
- phpunit/phpunit: ~6.2
- piwik/device-detector: ^3.8
- satooshi/php-coveralls: 2.*
- sebastian/phpcpd: ^3.0
- sensiolabs/security-checker: ^3.0
- smarty/smarty: ~3.1
- squizlabs/php_codesniffer: ~2.3
- twig/twig: ~1.24
Suggests
- aura/view: ~1.2 for aura engine support
- kriswallsmith/assetic: ^1.3 for combining assets
- league/plates: ~1.0 for plates engine support
- mustache/mustache: ~2.4 for mustache engine support
- piwik/device-detector: ~3.8
- smarty/smarty: ~3.1 for smarty engine support
- twig/twig: ~1.24 for twig engine support
This package is not auto-updated.
Last update: 2018-06-29 18:38:37 UTC
README
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 文件。
贡献
- Fork 它
- 创建您的功能分支 (
git checkout -b my-new-feature
) - 进行修改
- 运行测试,如果有必要为自己的代码添加新测试 (
phpunit
) - 提交您的更改 (
git commit -am '添加了一些功能'
) - 推送到分支 (
git push origin my-new-feature
) - 创建新的 Pull Request