public function testConstructor()
 {
     $field = new Field("id");
     $this->assertEquals($field->getFieldName(), "id");
     $field = new Field("phone", array("label" => "Phone", "sortable" => true, "filterable" => true, "visible" => false, "formatValueCallback" => function ($value) {
         return strtoupper($value);
     }, "autoEscape" => true, "translatable" => true, 'category' => "my.category", 'nullIfNotExists' => true));
     $this->assertEquals("Phone", $field->getLabel());
     $this->assertTrue($field->getSortable());
     $this->assertTrue($field->getFilterable());
     $this->assertFalse($field->getVisible());
     $this->assertNotNull($field->getFormatValueCallback());
     $this->assertTrue($field->getFilterable());
     $this->assertEquals("my.category", $field->getCategory());
     $this->assertTrue($field->getNullIfNotExists());
     $field = new Field("test");
     $this->assertFalse($field->getNullIfNotExists());
 }
Example #2
0
 public function displayGridValue($row, Field $field)
 {
     $value = null;
     $fieldName = $field->getFieldName();
     if (array_key_exists($fieldName, $row)) {
         $value = $row[$fieldName];
     }
     // real treatment
     if (is_callable($field->getFormatValueCallback())) {
         $callback = $field->getFormatValueCallback();
         $reflection = new \ReflectionFunction($callback);
         if ($reflection->getNumberOfParameters() == 1) {
             $value = $callback($value);
         } elseif ($reflection->getNumberOfParameters() == 2) {
             $value = $callback($value, $row);
         } else {
             throw new DataGridException("Wrong number of parameters in the callback for field " . $field->getFieldName());
         }
     }
     // send event for changing grid query builder
     $event = new DataGridEvent();
     $event->set("value", $value);
     $event->set("row", $row);
     $event->set("field", $field);
     $this->dispatcher->dispatch(KitpagesDataGridEvents::ON_DISPLAY_GRID_VALUE_CONVERSION, $event);
     if (!$event->isDefaultPrevented()) {
         $value = $event->get("value");
         if ($value instanceof \DateTime) {
             $returnValue = $value->format("Y-m-d H:i:s");
         } else {
             $returnValue = $value;
         }
         $event->set("returnValue", $returnValue);
     }
     $this->dispatcher->dispatch(KitpagesDataGridEvents::AFTER_DISPLAY_GRID_VALUE_CONVERSION, $event);
     $returnValue = $event->get("returnValue");
     // auto escape ? (if null, return null, without autoescape...)
     if ($field->getAutoEscape() && !is_null($returnValue)) {
         $returnValue = htmlspecialchars($returnValue);
     }
     return $returnValue;
 }