[Risolto]Controller Che Non Passa Un Secondo Model Alla View!

Salve stò letteralmente impazzendo da 2gg, non riesco a capire perchè il Controller non voglia saperne di passare (nel render()) un secondo model, dichiarato col classico new.

Nel controller ho :


$model2 = new ProgettoDimiScritta;

… lo passo alla view create.php


$this->render('create', array(

            'model' => $model,

            'model2' => $model2,

            'paziente_id' => $paziente_id,

            'etichettaDataPresaInCarico' => $etichettaDataPresaInCarico,

            'is_ripresa_in_carico' =>$is_ripresa_in_carico,

            'faseRiab_precedente' =>@$faseRiab_precedente,

            'campiVisibili'=>$campiVisibili

        ));



nulla … mi ritorna una exception "unable …" se però dichiaro dentro la view create così:


$model2 = new ProgettoDimiScritta;

([color="#FF0000"]dentro create.php[/color])

tutto fila, ma è assurdo (chiaramente non posso gestire il model dal controller)!!!

Da cosa sono impossessato ?!?!?! Cosa ha questo model di diverso dagli altri :( ?!

postaci l’errore magari.

prova a fare così:




$this->render('create', array(

            'model' => $model,

            'model2' => new ProgettoDimiScritta(),

            'paziente_id' => $paziente_id,

            'etichettaDataPresaInCarico' => $etichettaDataPresaInCarico,

            'is_ripresa_in_carico' =>$is_ripresa_in_carico,

            'faseRiab_precedente' =>@$faseRiab_precedente,

            'campiVisibili'=>$campiVisibili

));



per vedere se c’è qualcosa che invalida il model2 nell’azione prima del render.

non dovrebbe essere senza parentesi () ? Posto l’errore, grazie ;)

Ok se seguo l’esempio di @st4nny vien passato il $model2 ma resta il problema che dovrei ‘trattarlo’ dall’interno del controller, dovrei leggere gli attributes di quel model e salvarli (->save(true);)

Ho anche provato a dichiararla nel controller


$model2 = new ProgettoDimissioneScritta;

(rimuovendo il codice che salva)e funziona, quindi sembra che il problema nasca dal


$model2->save();

continuo a testare …

grazie

Posto la soluzione anche se una soluzione non sembrerebbe, alla fine non ho fatto nulla di diverso da prima, se non chiamare il model in maniera diversa … prima lo chiamavo $modelDimiScritta ora l’ho chiamato $model2 e funzia !!! :blink: boh …

Che la scrittura a cammello non piaccia ai models ?! :lol:

grazie a tutti !! ;)

Per istanziare una class in PHP si può fare sia in questo modo:


$obj = new ClassName;

che in questo modo:


$obj = new ClassName();

Io sono un amante delle parentesi: di fatto quando instanzi una classe, richiami un metodo costruttore. I metodi in PHP si chiamano con le parentesi. A me viene più semplice pensare all’instanziazione di una classe con le parentesi. Io sono anche quello che mette le parentesi graffe negli if o nei for che hanno una sola riga di codice. Ma non ne parlo perché qui andiamo fuori tema.