Drupal 8 - posso passare dati al modulo standard di scrittura nodi ?
Buon giorno a tutti,
sono nuovo del sito e quasi nuovo di Drupal.
Sto scrivendo una applicazione in ambito Condominiale dove è necessario che gli utenti immettano dati su parecchi "contenitori" collegati tra loro tramite diverse relazioni.
Faccio un esempio, ma nella applicazione i casi sono tanti.
Da una vista che elenca i Condomini amministrati, l'amministratore deve creare le palazzine costituenti un condominio.
Nella vista tabellare che ho creato, sulla riga riservata ad ogni condominio, ho aggiunto un campo "testo personalizzato" con etichetta "aggiungi palazzina" e con un link "/drupal/node/add/palazzina".
Non ho trovato il modo di passare il nid del Condominio al Form di inserimento del nuovo nodo Palazzina.
In verità sul Form di inserimento ho trovato la voce "Argomenti da passare alla vista" ma non ne ho capito l'utilizzo.
Il tutto funziona perfettamente ma l'amministratore del condominio si trova di fronte il form di riempimento dei dati del "contenitore" Palazzina ed è contretto come prima cosa a inserire il nome del Condominio al quale la palazzina si riferisce.
Sono sicuro che la soluzione c'é ma non la vedo.
Grazie in anticipo
Risposte
Forse questo modulo fa al
Forse questo modulo fa al caso tuo:
https://www.drupal.org/project/prepopulate
Ho letto e mi pare che il
Ho letto e mi pare che il modulo prepopulate possa fare al caso mio.
Stasera provo a installarlo.
Grazie
Se ci riesci fammi sapere, ma
Se ci riesci fammi sapere, ma credo che partire da una vista sia abbastanza dura.
potresti partire da un contenuto chiamato amministrazione condominiale.
con un modulo molto comodo come https://www.drupal.org/project/inline_entity_form sarebbe facile aggiungere entità referenziate direttamente dal form del nodo.
Ma purtropo vedo che sei in D8 e forse potresti provare adusare il modulo paragrafi.
Saluti
Ganovelli Ho installato e
Ganovelli
Ho installato e provato il modulo prepopulate e con i campi normali tipo :
/drupal/node/add/palazzina?edit[title]=titolo%20prepopolato
funziona perfettamente.
Non riesco invece a trovare il modo di passare i dati per i campi padre-figlio, come il campo del_condominio che lega la palazzina al condominio, che poi è il vero scopo della mia richiesta.
/drupal/node/add/palazzina?edit[del_condominio][und][DELTA][target_id]=Entity%20label%20(211)
Potresti darmi qualche ulteriore aiuto ?
Grazie.
Tommy55
Ho visto anche il modulo inline_entity_form e mi sembra che l'approccio sia valido. Ho però il dubbio che non sia supportato e che potrebbe anche non funzionare per Drupal 8.
Grazie
L'ultima volta che ho usato
L'ultima volta che ho usato il modulo (non so se nel frattempo è cambiato qualcosa ...) ho utilizzato questa forma:
edit[nome_macchina_campo_ref]=entity_id
prova con:
/drupal/node/add/palazzina?edit[del_condominio]=211
l'eventuale titolo viene caricato dall'id passato se si tratta di un nodo
Yeah!, Yes Yes Non
Yeah!, Yes Yes
Non esattamente come hai detto ma quasi, ci voleva il prefisso del campo.
/drupal/node/add/palazzina?edit[field_del_condominio]=211
Ora la mia applicazione si presenterà più semplice da usare.
Chissà poi perchè al campo title non si deve mettere il prefisso field_ e agli altri invece sì. Boh
Certo la documentazione del modulo prepopulate lascia proprio a desiderare !! (per non usare una espressione peggiore).
Grazie, grazie
Ottimo! In generale il
Ottimo! In generale il prefisso field_ viene aggiunto ai campi generati da interfaccia. Quelli generati da codice (o le proprietà dell'entità) possono avere nomi macchina differenti.
Esatto ! Trascrivo alcuni
Esatto !
Trascrivo alcuni campi che ho usato senza problemi,
nel caso qualcuno volesse approfondire :
edit[title]=Oggetto o titolo del documento
edit[name]={{ uid }} per il Nome dell'autore
edit[body]=Testo del documento
e poi
edit[field_del_condominio]={{ nid }} per il condominio di riferimento
edit[field_della_palazzina]={{ nid_1 }}
I campi {{ uid }} {{ nid }} {{ nid_1 }} utilizzabili sono quelli dichiarati nella vista e si trovano negli "SCHEMI DI SOSTITUZIONE"
Aggiungo una domanda :
In qualche caso sarebbe utile registrare un nodo senza permettere modifiche all'utente (es. registrare nome e data della lettura di un documento riservato).
E' possibile trasmettere nell'URL oltre ai dati anche un comando per scrivere direttamente il nodo, senza che l'utente possa modificare o addirittura non registrare il nodo ?
Grazie per la risposta
Per eseguire un'azione sul
Per eseguire un'azione sul nodo o su altra entità collegata o comunque una scrittura su db, dovrai probabilmente scrivere del codice, con i dovuti controlli sui permessi. In d7 poteva essere fatto con Rules ma questo modulo in d8 ha ancora qualche problema.
Sarebbe bello fare in modo di
Sarebbe bello fare in modo di aprire una finestra di dialogo che poi si chiude per poter eseguire le operazionj direttamente da una vista.
Resta il problema di come reindirizzare il ritorno alla vista per evitare di ritrovarsi alla chiusura del pop up sul nodo referenziato.
Ahh.. la vista dovrebbe aggiornarsi.
E'possibile agganciare un link per il ritorno alla vista come già succede usando il camo modifica nodo dalla vista garantendo allo stesso tempo il passaggio del parametro?
Su D8 puoi aprire un modale
Su D8 puoi aprire un modale utilizzando questa struttura:
<a class="use-ajax" data-dialog-type="modal" href="[url]">[testo link]</a>
quindi potresti usare in un campo di testo della vista qualcosa del genere (nota: nell'ultima versione di prepopulate è cambiata la modalità di passaggio dei parametri)
<a class="use-ajax" data-dialog-type="modal" href="/node/add/article?edit[field_riferimento][widget][0][target_id]={{ nid }}&destination=/lista-nodi">Crea articolo</a>
nota che non tutti i temi caricano le dipendenze js necessarie (per gli anonimi), quindi se i link non funzionano per gli utenti anonimi devi aggiungerle nelle librerie del tema (e ripulire la cache):
...
dependencies:
- core/jquery
- core/drupal.ajax
...
la vista si ricarica dopo il submit (che non avviene tramite ajax .. sarebbe necessario modificare il comportamento del form).
Purtropo o perfortuna sono
Purtropo o perfortuna sono ancora con 7.
Prova ad installare
Prova ad installare https://www.drupal.org/project/simple_dialog e a creare un campo di testo (custom text) in una vista. Inserisci "Aggiungi articolo" sul testo del campo poi flag su rewrite field --> output as link --> link path "/node/add/generic-page?edit[title]=Nuovo titolo&destination=/test" (destination --> metti il path della vista) --> link class "simple-dialog" --> rel "width:90%".
Dovrebbe funzionare in maniera simile ...