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()); }
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; }