2017-09-29 5 views
2

J'utilisais AOR 1.2.2 pour le panneau des paramètres du site. partie Tricky est que ces paramètres peuvent avoir différents types: string, int, bool, tableau de chaînes, int etc j'ai réussi à le faire en vous connectant dossier du magasin et en utilisant ce code:L'entrée ne se répète pas à l'intérieur de SimpleForm

const SettingsEdit = (props) => { 
    return (
    <Edit actions={<SettingsEditActions {...props} />} title= 
     {<SettingsTitle />} {...props}> 
     <SimpleForm toolbar={<EditToolbar />}> 
     <TextField source="description" /> 
     <DisabledInput elStyle={{ width: '100%' }} label="Default 
     value" source="defaultValue" /> 
     {renderCountryValue(props)} 
     </SimpleForm> 
    </Edit> 
); 
}; 




const renderCountryValue = (prop) => { 
    const record = prop.record; 
    if (record) { 
    if (record.multilang) { 
     // countryValue will be a dict with locale keys 
     // TODO Multilang fields temporary disabled in restClient 
     return null; 
    } 
    // countryValue will be single value or array 
    if (record.schema.type === 'array') { 
     // countryValue will be single array 
     if (record.schema.items.type === 'string') { 
     return <LongTextInput format={v => v.join()} parse={v => v.split(',')} label="Value" source="countryValue" />; 
     } 
     if (record.schema.items.type === 'integer') { 
     return <LongTextInput format={v => v.join()} parse={v => v.split(',')} validate={validateIntegerArray} label="Value" source="countryValue" />; 
     } 
    } 
    // countryValue will be single value 
    if (record.schema.type === 'string') { 
     return <TextInput label="Value" source="countryValue" />; 
    } 
    if (record.schema.type === 'integer') { 
     return <NumberInput label="Value" source="countryValue" />; 
    } 
    if (record.schema.type === 'boolean') { 
     return <BooleanInput label="Value" source="countryValue" />; 
    } 

    return <LongTextInput label="Value" source="countryValue" />; 
    } 
    return <TextInput label="Value" source="countryValue" />; 
}; 

Il travaillait bien jusqu'à ce que j'ai essayé de mettre à jour AOR à 1.3.1 puis il s'est arrêté. Ce que j'ai remarqué est que dans le premier rendu il n'y a pas d'enregistrement donc il rend TextInput par défaut mais sur le second rendu quand il y a un enregistrement il ne rediffuse pas cette entrée dans un type correct comme NumberInput ou etc J'ai essayé de déboguer et programmer placer quand il devrait rendre d'autres entrées mais rien ne se passe à l'écran. Des idées ou des solutions de contournement?

Répondre

0

Avoir fait face à quelques problèmes moi-même en fonction de l'enregistrement dans les accessoires. En général, je règle les vérifications manuelles pour la valeur et renvoie null lorsqu'aucun enregistrement n'est trouvé dans les accessoires.