Parere Su Struttura Per Inserimento Ordini

Mi piacerebbe avere alcuni pareri su come gestire la creazione/modifica di una struttura dove la rappresentazione del "dato" viene fuori dalla relazione di due modelli.

Mi spiego, l’esempio è quello di una fattura o di un ordine dove c’è un modello che rappresenta i dati di intestazione (numero, cliente, totali, …) e uno che rappresenta i prodotti o servizi ordinati o fatturati (prodotto/servizio, quantità, costo unitario, etc…).

L’inserimento viene rappresentato da un’unica vista che va quindi a gestire la creazione di due tipologie di modelli differenti.

Le strade che ho pensato e provato fino ad ora sono:

[list=1]

[*]Creazione di un controller ad hoc che gestisce le action per l’inserimento di entrambi i modelli con relativa vista.

[*]Utilizzare solamente il controller "fattura" e quindi avere quello come riferimento per entrambi i modelli sia per le action che per le viste.

[*]Utilizzare il controller "fattura" per gestire solo le action del modello relativo e il controller "righeFattura" per gestire le action di inserimento/modifica delle righe; in questo caso però la vista è comunque sempre gestita dal controller fatture.

[/list]

Tutte e tre le soluzioni sono facilmente implementabili con Yii ma mi piacerebbe sapere qual’è, secondo voi, la soluzione più “elegante” o se avete utilizzato strade diverse.

:)

Ciao,

in un progetto simile ho diviso ordini e fatture in due moduli distinti.

Entrambi i moduli , abbastanza simili ma non del tutto per utilizzarli con stesso controller e modelli, hanno una testata ed un dettaglio. Per generare l’intero documento(ordine o fattura o evasione o trasferimento) utilizzo un solo controller per riempire la testata e il relativo dettaglio.

Salve ragazzi,

sono un principiante e uso yii2 devo realizzare la form per la gestione della fattura.

Potreste postarmi o almeno descrivermi come realizzare il tutto.

In particolar modo vorrei capire come gertire la parte dei dettagli ossia tabella molti.

Grazie

Userei la soluzione 1) o la 2)

Mi sembrano sostanzialmente equivalenti. La differenza è cos’altro dovresti gestire nel controller fattura.

Se il 100% di quello che gestisci nel controller fattura è relativo ai 2 model e alla view unica, di fatto coincide con la creazione di un controller ad hoc.

La soluzione 3 la vedo "apparentemente inutile" che va solo ad aumentare la complessità in generale e poi magari ti trovi a dover rimbalzare di continuo tra i due controller rischiando di perdere il "filo del discorso".

Grazie Federico dell’osservazione.

Era una vecchia discussione, comunque la soluzione che attualmente uso in un piccolo progetto è la 2 :)

Il controller delle fatture si appoggia al modello fattura e rigaFattura, la rigaFattura non ha controller.

La soluzione 3 in realtà può avere una sua logica sopratutto se l’inserimento/modifica vengono fatti via Ajax, in questo caso il controller delle righe ordine si occupa esclusivamente della loro creazione/modifica e può essere riusato in vari contesti (es. se sono separate Fatture da Ordini o da modelli sostanzialmente simili).

Concordi?

Definire una logica per la struttura di un’app non è mai banale comunque!

In teoria (non ho mai avuto occasione di provare) se si utilizzano controlli lato client, forse l’inserimento/modifica potrebbe essere ideale utilizzare PJAX, per quello che ho letto di questa tecnologia.

Nicola potresti postarmi l’esempio che hai utilizzato. In particolar modo mi interessa la View di inserimento dati

Purtroppo non posso perché non è un progetto pubblico ma la view non è molto complicata.

Si tratta di una vista contenitore per la struttura della fattura, al suo interno richiama un altra vista con le righe della fattura, questa viene ricaricata via ajax quando si aggiungono, rimuovo o modificano righe.

Puoi anche utilizzare il widget Pjax fornito da Yii2, da un occhio a questo tutorial per le possibili implementazioni.

Grazie lo stesso.

Io ero interessato alla gestione delle righe della fatura.

Hai usato qulche widget tipo gridview o altro?

Io no ma la mia è una cosa un po’ particolare, se vuoi puoi usare tranquillamente gridview, nel tutorial che ti ho linkato c’è un esempio di pJax con gridview che è il seguente:




<?php Pjax::begin(); ?>

<?= GridView::widget([

    'dataProvider' => $dataProvider,

    'filterModel' => $searchModel,

    'columns' => [

        ['class' => 'yii\grid\SerialColumn'],

 

        'id',

        'branch:ntext',

        'version:ntext',

        'release_date:ntext',

 

        [

            'class' => 'yii\grid\ActionColumn',

            'template' => '{view}',

        ],

    ],

]); ?>

<?php Pjax::end(); ?>



puoi usare questa soluzione, fai un po’ di prove seguendo il tutorial, se comprendi come funziona il widget pJax vedrai che è piuttosto semplice.

Ciao Nicola,

Forse mi sono spiegato male. A me interessa un modo per aggiungete righe di dettaglio all’ordine. L’ideale sarebbe una griglia che man mano mi consenta di inserire nuovi articoli