public function save(Snippet $snippet) { if (!$snippet->hasName()) { throw new \InvalidArgumentException("Snippet name cannot be empty"); } foreach ($snippet->getFields()->toArray() as $field) { if ($field->isRequired()) { if (!$field->hasData()) { throw new \InvalidArgumentException("SnippetField: '" . $field->getFieldName() . "' requires a value"); } } } if ($snippet->getTemplate()->hasController()) { $object = $snippet->getTemplate()->executeController($snippet); $snippet = $object->getSnippet(); } $em = $this->getEntityManager(); $em->persist($snippet); $em->flush(); }