Example #1
0
 public function displayGridValue($row, Field $field)
 {
     // parse field name and get value after the dot
     $fieldNameTab = explode('.', $field->getFieldName());
     if (in_array($fieldNameTab[0], $this->rootAliases)) {
         array_shift($fieldNameTab);
     }
     $value = $row;
     while (count($fieldNameTab) > 0) {
         $fieldName = array_shift($fieldNameTab);
         // get parameter in the $row
         $value = $value[$fieldName];
     }
     //        $fieldName = array_shift($fieldNameTab);
     //        $value = $row[$fieldNameTab];
     // real treatment
     if (is_callable($field->getFormatValueCallback())) {
         $callback = $field->getFormatValueCallback();
         $reflection = new \ReflectionFunction($callback);
         if ($reflection->getNumberOfParameters() == 1) {
             $returnValue = $callback($value);
         } elseif ($reflection->getNumberOfParameters() == 2) {
             $returnValue = $callback($value, $row);
         } else {
             throw new DataGridException("Wrong number of parameters in the callback for field " . $field->getFieldName());
         }
     } elseif (is_scalar($value)) {
         $returnValue = $value;
     } elseif ($value instanceof \DateTime) {
         $returnValue = $value->format("Y-m-d H:i:s");
     } else {
         $returnValue = $value;
     }
     // auto escape ?
     if ($field->getAutoEscape()) {
         $returnValue = htmlspecialchars($returnValue);
     }
     return $returnValue;
 }