Salve a tutti,
sono alle prese con il mio primo componente e probabilmente ho un po di confusione in testa su come funziona.
Io ho un codice simile al seguente
Model
class RrModelRecensioni extends JModel
{
var $_data;
/**
* Campi di ricerca
*/
var $_id_ristorante = null;
var $_id_utente = null;
var $_onlyPublished = true;
function onlyPublished( $onlyPublished=true )
{
$this->_onlyPublished = $onlyPublished;
$this->_data = null;
}
[cut]
.
.
.
.
[cut]
}
Controller
class RrControllerRecensioni extends RrController
{
function display()
{
// Inizializza il model per le recensioni
$model =& $this->getModel('recensioni');
[cut...] INIZIALIZZAZIONE ALTRI MODEL ACCESSORI [...cut]
if ( RrHelper::condizione() ) )
$model->onlyPublished( false );
// Assegna i model alla view
$document =& JFactory::getDocument();
$viewType = $document->getType();
$view = $this->getView("recensioni", $viewType);
$view->setModel( $model, true );
[cut...] ASSEGNAZIONE ALTRI MODEL ALLA VIEW [...cut]
JRequest::setVar('view', 'recensioni');
parent::display();
}
Come si può vedere nel controller viene richiamato onlyPublished() del model che setta la variabile $this->_onlyPublished, dopo di che viene assegnato il model alla view. La variabile $this->_onlyPublished indica al model quali dati recuperare.
Il mio problema è che quando viene eseguita la view, la variavile $this->_onlyPublished del model non ha più il valore precedentemente assegnato nel controller.
Inserendo un echo nel costruttore del model ho notato che questo viene creato due volte (una volta nel controller e l'altra nella view), cosa secondo me errata in quanto pensavo che il model venisse passato alla view per riferimento e non ricreato.
Quindi mi chiedo se questo è il comportamento corretto, o sbagli io qualche cosa ?
Se effettivamente è il comportamento corretto, come posso dal controller istruire il model su che dati recuperare successivamente nella view con una chiamata tipo $this->get("Data") ?
Spero di non essere stato troppo contorto e di essermi spiegato.
Grazie.