dotblue / nette-control-rendering
支持AJAX的Control层级结构的多种渲染模式。
1.0.4
2014-05-12 06:19 UTC
Requires
- php: >=5.4
- nette/nette: >=2.1.0,<2.3.0
This package is not auto-updated.
Last update: 2024-09-24 01:38:13 UTC
README
要求
- PHP 5.4+
- nette/nette >= 2.1
安装
只需从Github复制源代码或使用 Composer
$ composer require dotblue/nette-control-rendering@~1.0
用法
如果您想您的自定义组件支持比默认渲染模式更多的模式,您可以通过编写更多的 render
方法来实现,如下所示
public function render() { ... } public function renderSmall() { ... }
在模板中,您可以使用冒号表示法使用第二种渲染模式
{control foo:small}
但是这种方法与AJAX配合得不是很好。有时您的组件由许多子组件组成,但整个层级结构应该有相同的统一渲染模式集。例如,想象一些数据结构,它可以是复杂HTML或只是一个表格,您希望将每个单元格也实现为组件。那么不仅主组件必须有2种渲染模式,单元格子组件也是如此。
这就是DotBlue\NetteControl\Renderer
类的作用。只需将您的组件包装在其工厂方法中,并设置适当的渲染模式
use DotBlue\NetteControl\Renderer; protected function createComponentFoo() { return new Renderer(new Foo, 'small'); }
现在即使您在模板中使用简单的{control foo}
,也会调用renderSmall()
方法进行渲染。包括AJAX请求!
但这不仅仅是这样。您的Foo
组件的所有子组件也将自动被相同的Renderer
包装。所以如果它们也实现了renderSmall()
方法,它将被使用,您无需在模板中任何地方指定。