как получить дату валютирования DatePicker для использования в js () - PullRequest
1 голос
/ 11 февраля 2012

Я хочу управлять сеткой с датами на двух DatePickers, Я перезагружаю всю страницу, хотя может быть лучше перезагрузить только сетку. В любом случае, я не могу получить значение DatePicker, чтобы использовать его в массиве при перезагрузке, как мне это сделать? У меня есть это:

class page_caja extends Page {
function init(){
    parent::init();

    if(!$_GET['fInicial']){
        $fInicial=date('d/m/Y');
    }else{
        $fInicial=$_GET['fInicial'];
    }
    if(!$_GET['fFinal']){
        $fFinal=date('d/m/Y');    
    }else{
        $fFinal=$_GET['fFinal'];
    }
    $f=$this->add('Form');

    $inicial=$f->addField('DatePicker','fInicial','Fecha Incial')->set($fInicial);
    $final=$f->addField('DatePicker','fFinal','Fecha Final')->set($fFinal);

    //Tabla de Pagos Pendientes
    $this->add('H3')->set('Movimientos');
    $g=$this->add('MVCGrid');
    $g->setModel('Caja');                
    $g->removeColumn('programaPago');
    $g->addColumn('date','created_dts','Fecha');
    $g->dq->where("DATE(created_dts)>=",$inicial->get());
    $g->dq->where("DATE(created_dts)<=",$final->get());
    $g->addTotals();


    $inicial->js('change',$this->js()->reload(array('fInicial'=>$inicial->js()->value(),'fFinal'=>$final->js()->value())));
    $final->js('change',$this->js()->reload(array('fInicial'=>$inicial->js()->value(),'fFinal'=>$final->js()->value())));


}
}

1 Ответ

1 голос
/ 13 февраля 2012

Ваш подход довольно хорош, я не вижу в этом ничего плохого, хотя я бы написал так.Мой метод использует фильтр 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()
    );

Затем посмотрите консоль инспектора для вывода.

...