fix: agregar atributo requerido 'tipo' en posts
- Añade campo 'tipo' al SCHEMA_MAP de posts (whitelist de extractCleanData) - Agrega selector 'Tipo de Contenido' en PublicationLayout (Noticia/Evento/Aviso/Clasificado/Blog) - Agrega fallback server-side en entities.ts: si 'tipo' no llega, se asigna 'noticia' por defecto - Soluciona AppwriteException: Missing required attribute 'tipo' al crear publicaciones
This commit is contained in:
parent
7e41c48dc1
commit
155546f90e
@ -57,6 +57,16 @@ function extractCleanData(entity: string, formData: FormData): Record<string, an
|
||||
data[key] = strVal;
|
||||
}
|
||||
|
||||
// Asegurar atributo requerido "tipo" para la colección media
|
||||
if (entity === 'media' && !data.tipo) {
|
||||
data.tipo = 'imagen';
|
||||
}
|
||||
|
||||
// Asegurar atributo requerido "tipo" para la colección posts
|
||||
if (entity === 'posts' && !data.tipo) {
|
||||
data.tipo = 'noticia';
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
@ -382,6 +382,22 @@ export const PublicationLayout: React.FC<PublicationLayoutProps> = ({
|
||||
required
|
||||
/>
|
||||
|
||||
{/* Tipo de Contenido */}
|
||||
<FieldWrapper label="Tipo de Contenido" required error={validationErrors.tipo}>
|
||||
<select
|
||||
name="tipo"
|
||||
defaultValue={initialData?.tipo || 'noticia'}
|
||||
required
|
||||
className={inputClass}
|
||||
>
|
||||
<option value="noticia">Noticia</option>
|
||||
<option value="evento">Evento</option>
|
||||
<option value="aviso">Aviso</option>
|
||||
<option value="clasificado">Clasificado</option>
|
||||
<option value="blog">Blog</option>
|
||||
</select>
|
||||
</FieldWrapper>
|
||||
|
||||
{/* Estado */}
|
||||
<FieldWrapper label="Estado" required error={validationErrors.estado}>
|
||||
<select
|
||||
|
||||
@ -16,6 +16,7 @@ export const SCHEMA_MAP: Record<string, FieldDefinition[]> = {
|
||||
posts: [
|
||||
{ name: 'titulo', label: 'Título', type: 'text', required: true, section: 'Datos Básicos', gridSize: 12 },
|
||||
{ name: 'slug', label: 'URL Amigable (Slug)', type: 'text', required: true, section: 'Metadatos', gridSize: 6 },
|
||||
{ name: 'tipo', label: 'Tipo', type: 'select', options: ['noticia', 'evento', 'aviso', 'clasificado', 'blog'], required: true, section: 'Metadatos', gridSize: 6 },
|
||||
{ name: 'tipo_publicacion_id', label: 'Tipo de Publicación', type: 'relation', relationCollection: 'publication_types', relationLabel: 'descripcion', required: true, section: 'Metadatos', gridSize: 6 },
|
||||
{ name: 'estado', label: 'Estado', type: 'select', options: ['borrador', 'pendiente', 'publicado', 'archivado'], required: true, section: 'Configuración', gridSize: 4 },
|
||||
{ name: 'fecha_publicacion', label: 'Fecha de Publicación', type: 'date', required: true, section: 'Configuración', gridSize: 4 },
|
||||
|
||||
Loading…
Reference in New Issue
Block a user