Joomla.it Forum
Non solo Joomla... => Sviluppo => : mau_develop 15 Feb 2013, 16:09:50
-
Siccome ragionare su basi non comuni è complicato e postare codice spesso è inutile uso come esempio il com_weblinks, lato ADMIN.
Supponiamo di voler una vista dove non cambi solo il template ma anche i dati che lo costruiscono esempio "weblinko"
Mi occorre un controller weblinko, un model weblinko e la view weblinko.
Non voglio il proxi a getmodel perchè il model mi serve come dico io.
Ho fatto quindi un display() nel controller/weblinko.
Forzando nel controller principale la vista di default a weblinko invece che weblinks sembra non bastare e non usa il mio weblinko/display()... così sono andato nell'entry point e ho forzato la task ovvero, brutalmente per testare, se non c'è task la task è weblinko.display
Ma non ci si infila in quel dannato display....
-
ciao Mau...
mi hai incuriosito con questo post e ho provato a fare quello che indicavi.
ho supposto che tu stessi usando J!2.5 (anche perchè la 3.x non l'ho ancora installata sul mio serveruccio di prova)
a me sembra funzionare (ma propendo più per aver sbagliato io a comprendere quello che chiedevi)
ad ogni modo questo quello che ho fatto:
administrator/components/com_weblinks/controllers/weblinko.php
<?php
defined( '_JEXEC' ) or die;
jimport('joomla.application.component.controller');
class WeblinksControllerWeblinko extends JController
{
}
administrator/components/com_weblinks/models/weblinko.php
<?php
defined( '_JEXEC' ) or die;
jimport( 'joomla.application.component.model' );
class WeblinksModelWeblinko extends JModel
{
}
administrator/components/com_weblinks/views/weblinko/view.html.php
<?php
defined( '_JEXEC' ) or die;
jimport( 'joomla.application.component.view' );
class WeblinksViewWeblinko extends JView
{
public function display( $tpl )
{
parent::display( $tpl );
}
}
administrator/components/com_weblinks/views/weblinko/tmpl/default.php
Test
(http://www.route4web.altervista.org/images/mau_vista_senza_crud.PNG)
EDIT
_____
il percorso nella barra degli indirizzi l'ho inserito manualmente. non so se poteva essere rilevante ma preferivo avvisare :)
-
[OT]
Mi stavo soffermando sul fatto che il subMenu sia stato renderizzato nonostante nella vista non l'avessi messo...
il controller principale lo include nella funzione display...
corretta la mia "diagnosi"?
[/OT]
-
ok, la struttura è quella che ho fatto io.... manca il nocciolo della mia domanda...
se in quella view tu ora volessi es: l'elenco di tutti gli articoli content e l'elenco... di tutte le voci di menu' , insomma qualcosa per cui non risulta conveniente usare il crud istanziare mille table etc....
Dovresti usare il controller e il model...
inoltre se non ho sbagliato qualcosa (ormai sono stanco)...
-----------------------------
class WeblinksControllerWeblinko extends JController
-------------------------------
se in questa metti un costruttore o un display con un die(); ti accorgi che non la usi ... o almeno a me faceva così
-
inoltre se non ho sbagliato qualcosa (ormai sono stanco)...
class WeblinksControllerWeblinko extends JController
se in questa metti un costruttore o un display con un die(); ti accorgi che non la usi ... o almeno a me faceva così
non credo la stanchezza ti abbia ancora preso... anche a me fa la stessa cosa.
nel controller weblinko ho inserito una
function display() {
die();
}
come hai suggerito ed in effetti non viene proprio presa in considerazione.
-
aggiornamento
____________
ho eliminato (nel senso di aver cancellato il file) il controller weblinko...
il risultato è che richiamando la vista weblinko funziona ancora tutto... :o
-
Il punto dovrebbe essere che il componente viene inizializzato nel file weblinks.php che si occupa di settare il controller di default, cioe weblinks, nei controller interni dopo ci entri solo con l'apposito task, quindi ti trovi sempre ad usare il display di weblinks. Poi ci sta che mi sbagli,
-
no no è giusto ciò che dici.. il problema è che o mi sfugge qualcosa o diventa impossibile "mixare" i due tipi di uso del fw.
Non ho capito se è un problema relativo al legacy visto che prima non c'era nessun problema, in pratica non dovrebbe esistere il controller principale.... adesso provo a registrare la task per vedere se riesco a fargli capire di usare quel controller e quel metodo... se vi vengono idee..
-
ma che vuol dire??!!
Controllers only support one executable task per class via the execute method. This differs from the legacy JController class which mapped tasks to methods in a single class. Messages and redirection are not always required so have been dropped in this base class. They can be provided in a downstream class to suit individual applications. Likewise, methods to create models and views have been dropped in favor of using application or package factory classes.
-
a boh, forse è legato al fatto che prima nella cartella application c'erano tutti i file del MVC ed ora invece sono tutti separati, ma e solo una supposizione