Joomla.it Forum

Non solo Joomla... => Sviluppo => : tavvolley 20 May 2010, 18:15:56

: [risolto]problema caricamento vista e chiamata model differenti
: 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!!
: Re:problema caricamento vista
: mmleoni 20 May 2010, 21:30:07
non è che sia facile capire detto così  :(

in coda al metodo display della view ti sei ricordato di inserire parent::display()?

ciao,
marco
: Re:problema caricamento vista
: tavvolley 21 May 2010, 13:12:08
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();
?>