我制作像DataGrid一样的nette组件。我有一个基本组件BaseGrid。在这个组件中,我调用另一个组件Filter
public function createComponentFilter()
{
return new Multiplier(function ($columnName) {
return new \App\Filter\FilterControl($columnName, $this->session, $this->database);
});
}
其中$ columnName是列的名称(多么意外)
组件过滤器的构造函数
public function __construct($column_name, Session $session, $database)
{
$this->session = $session;
$this->sessionSection = $this->session->getSection('filtr');
$this->column_name = $column_name;
$this->database = $database;
}
在组件过滤器中我有一个ajax形式,在发送这个ajaxform之后我需要从表单传输字符串到组件Datagrid的render方法。
我当然尝试使用redrawControl进行会话。但没有任何事情发生。有一些可能的解决方案吗?喜欢会话,持久的params,魔术彩虹独角兽,或者更好的小蓬松猫,背面有西红柿披萨。
非常感谢您的想法。
答案 0 :(得分:0)
我不太确定你在找什么,但是......
可能是动态代码段。
https://doc.nette.org/en/2.3/ajax#toc-dynamic-snippets
{snippet items}
{foreach $items as $item}
{snippet "items-" . $item->id}
{$item->str}
{/snippet}
{/foreach}
{/snippet}
你只能重绘一个项目,e.q。
$this->redrawControl("item-$id");
如果这对你没有帮助。请提供更多代码,特别是拿铁模板。