Example #1
0
 /**
  * Column: custom value + PageTotalsRow
  *
  * @return string
  */
 public function demo6()
 {
     $this->prepareTiming();
     $provider = $this->getDataProvider();
     $grid = new Grid($provider, [new Column('id'), new Column('name'), new Column('role'), new Column('birthday'), (new Column('age'))->setValueCalculator(function ($row) {
         return DateTime::createFromFormat('Y-m-d', $row->birthday)->diff(new DateTime('now'))->y;
     })->setValueFormatter(function ($val) {
         return "{$val} years";
     }), (new Column('random_number'))->setValueCalculator(function ($row) {
         if (empty($row->random_number)) {
             $row->random_number = rand(1, 100);
         }
         return $row->random_number;
     }), new PageTotalsRow(['id' => function () {
         return 'Totals:';
     }, 'age' => PageTotalsRow::OPERATION_AVG, 'random_number' => PageTotalsRow::OPERATION_SUM])]);
     $grid->getComponent('table_footer')->addChildren([new SolidRow([new PaginationControl(new InputOption('p', $_GET, 1), 5, $provider)])]);
     return $this->page($grid, 'Column: custom value + PageTotalsRow');
 }