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