Buongiorno a tutti,
Vorrei visualizzare una Form dentro una view di un model diverso…
mi spiego meglio ,
dentro la view del model pratiche dovrei visualizzare il form del model note ed effettuare le inserti delle note.
Come Posso fare??
Grazie.
Buongiorno a tutti,
Vorrei visualizzare una Form dentro una view di un model diverso…
mi spiego meglio ,
dentro la view del model pratiche dovrei visualizzare il form del model note ed effettuare le inserti delle note.
Come Posso fare??
Grazie.
Dentro la view del modello pratiche puoi fare il render() del form note passandogli il modello note che avrai istanziato nel controller delle pratiche, comunque se cerchi ci sono un sacco di esempi che mo non ho il tempo di fare!
Prova e facci sapere
Grazie per la risposta.
ho provato a instanzioare il modello note nel controller delle pratiche ma niente.
class PraticheController extends Controller
{
$modelNote = new Note;
.....
}
nella view pratiche ho fatto cos’ì:
<?php
$modelNote = new Note; // istanza modello Note
$this->widget('zii.widgets.jui.CJuiTabs', array(
'tabs'=>array(
'note' =>$this->renderPartial("/Note/_form", array('model' => $modelNote), $this),
),
'options'=>array(
'collapsible'=>true,
),
));
?>
e riesco a visualizzare la form delle note, ma non mi fa inserisce le note.
Dove Sbaglio???
controlla, per fabore, protected/runtime/app.log e guarda se ti dice dove sta l’errore
"Non me le fa inserire" non è chiaro neppure a noi
La pagina segnala qualche errore?
Oppure a livello ‘php’ sembra tutto ok ma in db non ci finiscono le note?
PS: benvenuto sul forum (vedo hai solo 4 post, ma già sai formattare il codice, ottimo !)
Ciao,
Ho visto i log e non c’è nulla.
No non da nessun errore va liscio come l’olio ma non inserisce nulla.
ps. è normale che se al posto di _form metto create mi da errore??
<?php
$modelNote = new Note; // istanza modello Note
$this->widget('zii.widgets.jui.CJuiTabs', array(
'tabs'=>array(
//'note' =>$this->renderPartial("/Note/_form", array('model' => $modelNote),
'note' =>$this->renderPartial("/Note/create", array('model' => $modelNote),
$this),
),
'options'=>array(
'collapsible'=>true,
),
));
?>
Per fare il debug in questo caso, in cui penso sia un problema di validation rules del model, abilita il log del sql, compreso dei parametri.
Quindi riprova a fare un inserimento
Ora nel log dovresti vedere che qualcosa non ha funzionato nel settare gli attributi o nel validarli.
Per il discorso _form / create, forse devi solo controllare l’esistenza di create.php invece di _form.php. Delle volte basta uno spazio maledetto o un banale typo per incorrere in questo errore.
Oppure c’è un errore php nel file create.php e tu hai il livello dei warning troppo basso o l’error reporting disabilitato.
Nulla…
Sicuramente sbaglio qualche passaggio.
Se prova a inserire del model note riesco a inserire senza problemi, se provo ad inserire dal model pratiche
instanziando il model note nulla.
Se invece provo ad importare create invece di _form la view cerca di aprire il create del modello pratiche no del modello note
<?php
$modelNote = new Note; // istanza modello Note
$this->widget('zii.widgets.jui.CJuiTabs', array(
'tabs'=>array(
//'note' =>$this->renderPartial("/Note/_form", array('model' => $modelNote),
'note' =>$this->renderPartial("/Note/create", array('model' => $modelNote),
$this),
),
'options'=>array(
'collapsible'=>true,
),
));
?>
mi da l’errore
La proprietà "Note"."acconto" non è definita.
quindi vuol dire che cerca di prendere la create del modello pratiche nel modello note .
Help me
ah !!! ci sono !
Nella action, dentro al controller, devi istanziare, ovviamente sia il model note che il model pratiche
poi uno glielo ha gia passato come ‘model’ => $model, immagino
L’altro passaglielo come ‘pratiche’ => $model_pratiche o similare
poi nella vista devi avere l’accortezza di usare $model o $model_pratiche (o come hai chiamato l’altro) a seconda di su quale dei due model stai agendo
Nel salvare gli attributi, devi poi fare la stessa cosa, cioè salvare i dati di ENTRAMBI i modelli con la sequenza validate() … save()
spero di essermi spiegato bene,
Ciao e grazie per le dritte ma sono alle prime armi…
facciamo un passo alla volta
dentro l’action view del modello pratiche o provato a passargli i 2 model così:
public function actionView($id)
{ $model_note = new Note;
$this->render('view',array(
'model'=>$this->loadModel($id),
'model_note'=>$model_note,
));
}
e nalla view della pratica faccio cos’ì:
$this->widget('zii.widgets.jui.CJuiTabs', array(
'tabs' => array(
'note' => $this->renderPartial("//Note/_form", array('model_note' => $mode_note), $this), // modello note
'Importi' => $this->renderPartial("_importi", array('model' => $model), $this), // modello pratiche
'Importi Pratica' => $this->renderPartial("praticaImporti", array('model' => $model), $this), // modello pratiche
),
'options' => array(
'collapsible' => true,
),
));
e mi da l’errore: Undefined variable: mode_note
eheh è $model_note non $mode_note
Lol, ho perso cinque minuti a leggere il post, poi c’era Nicola che ha capito subito tutto. Mitico.
Perfetto _form importata,
ora per salvare le note devo richiamare la funzione save()
nel controller pratiche dentro l’action create???
class PraticheController extends Controller
{
public function actionCreate()
{
$model=new Pratiche;
$model_note=new Note;
if(isset($_POST['Note']))
{
$model_note->attributes=$_POST['Note'];
$model_note->save();
}
if(isset($_POST['Pratiche']))
{
$model->attributes=$_POST['Pratiche'];
if($model->save())
$this->redirect(array('view','id'=>$model->id_pratica));
}
}
........
}
è corretto o sbaglio qualcosa?
Allora, se ho capito bene, la pagina in questione visualizza la pratica e può editare le note relative, giusto?
Se è così, devi validare e salvare solo le note e se il save delle note è ok, allora procedi col redirect
Se invece devi editare e salvare SIA la pratica che le relative note, allora devi annidare gli if. Cioè:
verifichi se ci sono i dati in POST della pratica
se è così provi a salvare, mettendo il risultato (booleano) in una variabile
se e solo se questo save è andato bene (true), allora verifichi se ci sono i dati in post delle note
se è così provi a salvare le note, mettendo questo secondo booleano in una seconda variabile
se questo secondo booleano è ok, allora fai il redirect.
Ok Grazie a tutti per l’aiuto.
se ha funzionato una delle risposte che ricevi, metti il ‘+’ alla risposta
aiuta chi arriva sul forum in cerca della stessa risposta e aiuta la ‘reputazione’ di chi l’ha scritta
Magari usa anche le transazioni.
Se è tutto ok fai il commit, altrimenti il rollback.
Ottima idea Lerstat1968, me ne dimentico sempre