Ваш подход довольно хорош, я не вижу в этом ничего плохого, хотя я бы написал так.Мой метод использует фильтр submit и требует одну дополнительную перезагрузку, но он работает довольно гладко и просто для понимания:
$filter = $page->add('Form');
$grid = $page->add('Grid')->setModel('Caja');
$filter->addField('date','d1')->js('change',$filter->js()->submit());
$filter->addField('date','d2')->js('change',$filter->js()->submit());
if($filter->isSubmited()){z
$this->memorize('d1',$filter->get('d1'));
$this->memorize('d2',$filter->get('d2'));
$grid->js()->reload()->execute();
}
$d1=$this->recall('d1',null);
if($d1)$grid->dq->where('date(created_dts)>=',$d1);
$d1=$this->recall('d2',null);
if($d2)$grid->dq->where('date(created_dts)<=',$d2);
Вы также можете включить поля в reload (), но тогда вы должны читать $ d1 и $d2 из переменной $ _GET.
Если вы не можете получить значение из поля, попробуйте более простые способы:
$form->addField('test')->js('change')
->univ()->log(
$form->getElement('test')->js()->val()
);
Затем посмотрите консоль инспектора для вывода.