/** * @inheritDoc IElementType::getEditorHtml() * * @param BaseElementModel $element * * @return string */ public function getEditorHtml(BaseElementModel $element) { $html = ''; $fieldLayout = $element->getFieldLayout(); if ($fieldLayout) { $originalNamespace = craft()->templates->getNamespace(); $namespace = craft()->templates->namespaceInputName('fields', $originalNamespace); craft()->templates->setNamespace($namespace); foreach ($fieldLayout->getFields() as $fieldLayoutField) { $fieldHtml = craft()->templates->render('_includes/field', array('element' => $element, 'field' => $fieldLayoutField->getField(), 'required' => $fieldLayoutField->required)); $html .= craft()->templates->namespaceInputs($fieldHtml, 'fields'); } craft()->templates->setNamespace($originalNamespace); } return $html; }
/** * Validates some content with a given field layout. * * @param BaseElementModel $element The element whose content should be validated. * * @return bool Whether the element's content validates. */ public function validateContent(BaseElementModel $element) { $elementType = craft()->elements->getElementType($element->getElementType()); $fieldLayout = $element->getFieldLayout(); $content = $element->getContent(); // Set the required fields from the layout $attributesToValidate = array('id', 'elementId', 'locale'); $requiredFields = array(); if ($elementType->hasTitles()) { $requiredFields[] = 'title'; $attributesToValidate[] = 'title'; } if ($fieldLayout) { foreach ($fieldLayout->getFields() as $fieldLayoutField) { $field = $fieldLayoutField->getField(); if ($field) { $attributesToValidate[] = $field->handle; if ($fieldLayoutField->required) { $requiredFields[] = $field->id; } } } } if ($requiredFields) { $content->setRequiredFields($requiredFields); } return $content->validate($attributesToValidate); }