dotblue/nette-control-rendering

支持AJAX的Control层级结构的多种渲染模式。

1.0.4 2014-05-12 06:19 UTC

This package is not auto-updated.

Last update: 2024-09-24 01:38:13 UTC


README

要求

安装

只需从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()方法,它将被使用,您无需在模板中任何地方指定。