Example #1
0
 protected function prepareDemo11Grid()
 {
     $input = new InputSource($_GET);
     $grid = new Grid($provider = $this->getDataProvider(), [new TableCaption('Demo 11: Customization. Table Caption'), 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('income'))->setValueFormatter(function ($value) {
         if (!class_exists('\\NumberFormatter')) {
             return '$' . $value;
         }
         static $numberFormatter;
         if ($numberFormatter === null) {
             $numberFormatter = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
             $numberFormatter->setPattern('<span style="color:green">¤</span>#,##0.00;-<span style="color:red">¤</span>#,##0.00');
         }
         return $numberFormatter->format($value);
     }), new FilterControl('name', FilterOperation::OPERATOR_EQ, $input('name')), (new FilterControl('role', FilterOperation::OPERATOR_EQ, $input('role')))->setView(new TemplateView('select', ['options' => ['' => 'All Roles', 'User' => 'Users', 'Manager' => 'Managers', 'Admin' => 'Admins']])), new PageSizeSelectControl($input('ps', 10), [5, 10, 20, 50, 100]), new CsvExport($input('csv')), new ResetButton(), new PageTotalsRow(['id' => function () {
         return 'Page totals';
     }, 'age' => PageTotalsRow::OPERATION_AVG, 'income' => PageTotalsRow::OPERATION_SUM]), new PaginationControl($input('page', 1), 10, $provider), new ColumnSortingControl('id', new InputOption('sort', $_GET)), new ColumnSortingControl('birthday', new InputOption('sort', $_GET))]);
     $grid->getTileRow()->detach()->attachTo($grid->getTableHeading());
     $grid->attachTo($this->layout());
 }