/** * @param \FSi\Component\DataGrid\Column\CellViewInterface $view * @param \Symfony\Component\PropertyAccess\PropertyPathInterface $propertyPath * @return object */ private function getMostNestedObject(CellViewInterface $view, PropertyPathInterface $propertyPath) { if ($propertyPath->getLength() > 1) { return $this->propertyAccessor->getValue($view->getSource(), $propertyPath->getParent()->__toString()); } else { return $view->getSource(); } }
/** * {@inheritdoc} */ public function buildCellView(ColumnTypeInterface $column, CellViewInterface $view) { if (!$column->getOption('editable')) { return; } $data = $view->getSource(); $index = $view->getAttribute('row'); $form = $this->createForm($column, $index, $data); $view->setAttribute('form', $form->createView()); }
function it_sets_translatable_and_not_translated_to_true_when_column_has_not_translated_nested_translatable_property_in_field_mapping(ColumnTypeInterface $column, CellViewInterface $view, ClassMetadata $translatableMetadata) { $column->getOption('field_mapping')->willReturn(array('nested_object.translatable_property')); $nested_object = (object) array('translatable_property' => 'value', 'non_translatable_property' => 'value', 'locale' => 'de'); $data = (object) array('nested_object' => $nested_object); $view->getSource()->willReturn($data); $translatableMetadata->hasTranslatableProperties()->willReturn(true); $translatableMetadata->getTranslatableProperties()->willReturn(array('translations' => array('translatable_property' => 'translation_property'))); $translatableMetadata->localeProperty = 'locale'; $view->setAttribute('translatable', true)->shouldBeCalled(); $view->setAttribute('not_translated', true)->shouldBeCalled(); $this->buildCellView($column, $view); }