Joomla.it Forum
Non solo Joomla... => Sviluppo => : tavvolley 20 May 2010, 18:15:56
-
salve a tutti!! ho una vista che non ne vuole sapere di partire cosa devo fare?? ho fatto debug, echo... ma nulla
la richiamo nel controller con
...
JRequest::setVar('view',$caricaVista);
parent::display();
entra nella view selezionata, esegue le due righe:
<?php
defined('_JEXEC') or die('Accesso negato');
jimport('joomla.application.component.view');
?>
dopo mi entra nel costruttore del model associato alla view; quando finisce il costruttore si blocca mi visualizza solo gli echo inseriti sino a quel momento e non va avanti!!non ne vuole sapere di entrare nella funzione display della view? come posso fare ? ho fatto il debug passo passo dopo la fine del costruttore del model ma non sono riuscito a venire a capo del problema!! esiste un metodo per capire il perchè non carica la pagina? grazie!!
-
non è che sia facile capire detto così :(
in coda al metodo display della view ti sei ricordato di inserire parent::display()?
ciao,
marco
-
scusa ma ieri sera non ho avuto il tempo di dire che ho risolto (avevo dimenticato di mettere parent::__construct() nel costruttore del model).
come al solito ringrazio sempre per l'interessamento al mio problema!!
ho capito che chiamare una qualsiasi view in questo modo:
<?php
JRequest::setVar('view',$nomeView);
parent::display();
?>
è corretto.
tutto ieri mi sono fatto la cultura su come richiamare un model e non capivo dove sbagliavo :-)(anche perchè non mi entrava proprio nella funzione display() per poter capire che non trovava il model e quindi io pensavo fosse problema di richiamo della view!! )
La scelta del model da dove prendere i metodi è standard se la view rispetta i canoni di joomla riguardo i nomi. Per fare in modo che la view si riferisca al suo model dovremmo rispettare qualche nome, esattamente la view si dovrà chiamare XViewY e il suo model associato è XModelY dove X è il nome del componente mentre Y è il nome proprio della view!!
se vogliamo che la view utilizzi le funzioni di altri model (ad esempio anche quello della view Z (quindi nome view: XViewZ e il suo model relativo è XModelZ)), dobbiamo personalizzare il codice e NON utilizzare parent::display(), ma richiamare i vari model che si vuole utilizzare e poi settarli all'interno della view:
<?php
$primoModel = $this->getModel('Y','XModel');
$secondoModel = $this->getModel('Z','XModel');
$view->setModel($primoModel,true);//se vuoi impostare il model come default
$view->setModel($secondoModel);
$view->display();
?>