Esempio: ho membri (che possono accedere e aggiornare i propri dati) che hanno una o più qualifiche. Quindi ho un "membro" DataObject e una "qualifica" DataObject con una relazione has_one/has_many.Silverstripe 3.2: Come aggiungere e aggiornare Dataobjects in un modulo di frontend in modo dinamico?
Qualcosa di simile a questo:
class Qualification extends DataObject {
private static $db = array (
'Title' => 'Text',
'From' => 'Date',
'Till' => 'Date'
);
private static $has_one = array (
'Member' => 'Member',
);
...
class Member extends DataObject {
...
private static $has_many = array (
'Qualifications' => 'Qualification',
);
...
Ora voglio costruire una forma nel frontend che permette ai membri di aggiungere molti titoli in una sola volta e anche aggiornare le qualifiche esistenti nella stessa forma.
Potrebbe assomigliare a questo
Qualificazione Uno
Titolo: xxx (TextField) Da: xxx (DateField) Fino al: xxx (datefield)
Qualificazione Due
Titolo: xxx (campo di testo) Da: xxx (datafield) Fino a: xxx (datefield)
+ aggiungere qualifiche
Qual è il modo migliore per farlo?
ho potuto utilizzare jQuery per aggiungere i campi in modo dinamico in questo modo: http://jsfiddle.net/nzYAW/
Ma come posso gestire per aggiornare e aggiungerli al database. Tutto ciò che ho provato è stato davvero complicato e disordinato, quindi penso che forse qualcun altro ha un'idea che non vedo al momento. Ogni aiuto sarebbe apprezzato!
Non l'ho mai fatto prima, ma vorrei provare a utilizzare un 'GridField' sul front-end con il [modulo estensioni GridField] (https://github.com/silverstripe-australia/silverstrip-gridfieldextensions) Componenti 'GridFieldEditableColumns' e' GridFieldAddNewInlineButton'. – 3dgoo
@iraia è sufficiente un'azione che legge il post e modifica il nome dell'attributo di input in un formato che può essere letto come un array: http://stackoverflow.com/questions/2433727/submitting-a-multidimensional-array-via -post-with-php. Quindi basta salvare i dati "chiavi" sul dataobject. Ovviamente potresti avere un campo nascosto che inoltra il conteggio degli input che hai, e poi concatenarlo e ottenere un campo, ma in questo modo puoi semplicemente iterare i dati inviati abbastanza facilmente. –
Grazie ragazzi. Darò a entrambe le opzioni una prova e riferirò i miei risultati qui. :) – iraira