Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    110

    Applicazione Web con MVC - Come richiamare diverse sotto-pagine con una sola Action

    Ciao,
    sto iniziando lo sviluppo di un sito web in PHP realizzando a manina (non mi va di utilizzare un framework) il pattern MVC.

    Il mio dubbio adesso è nel passaggio tra il Controller e la View...

    La mia pagina è organizzata in "zone" indipendenti: Header - NavigationBar - SideBar - Content - Footer. Ognuno di questi elementi ha del contenuto dinamico che dipende da dati sul DB, dati in sessione, calcoli da fare di volta in volta.

    In tutti gli esempi che ho trovato online della realizzazione di un pattern MVC, con o senza framework, vedo sempre che il Controller richiama una singola View.

    Non riesco a capire come invece posso fare che il Controller coordini tutte le parti della pagina. Ad esempio:
    - l'Header è da richiamare sempre e comunque
    - la NavigationBar è da richiamare solo se l'utente è loggato
    - la SideBar è prevista solo se l'utente è loggato e solo in alcune pagine
    ecc. ecc.

    Avete qualche suggerimento?


    La mia struttura base è la seguente:

    index.php:
    codice:
    <html>
    <head>...</head>
    <body>
    
       <?php require_once "routes.php"; ?>
    
    </body>
    </html>

    routes.php:
    codice:
    <?php
        $controller = $_POST['CONTROLLER'];
        $action = $_POST['ACTION'];
    
        switch ($controller) {
           case 'home':
               $controllerInstance = new HomeController();
           break;
        }
    
        $controllerInstance->{$action}();
    ?>

    homeController.php:
    codice:
    <?php
        class HomeController {
            public funtion loadPage() {
                ......
                require_once "VIEWS/homepage.php";
            }
        }
    ?>

    Grazie in anticipo a tutti e complimenti per la qualità del forum.

    Buon lavoro, ciao

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, solitamente nel router si definiscono le "rotte" della varie sezioni e tutte le parti di template dovrebbero essere richiamabili come fossero variabili da inserire all'occorrenza.
    QUI per esempio (Zend Framework) mostra come in un template vai ad usare delle variabili (es.: {$book} ) all'interno di altri template.
    Quindi dovresti avere per esempio in homeController.php anche le classi o quel che serve per richiamare le parti opzionali(sidebar, navbar....) . A questo punto settare se il caso delle variabili che potrai inlcuidere o meno nel file mostrato col require_once().

  3. #3
    un controller richiama una e una sola view nell'mvc. dal controller passi tutte le variabili che servono alla view, e la view con tali variabili si forma. Es: vuoi che la sidebar appaia solo se l'utente è loggato? passa dal controller alla view, tra le altre cose, anche l'utente loggato e metti un controllo nella view. Oppure puoi fare chiamate a controller secondari per renderizzare l'elemento della pagina (tipo sub-request della request principale).
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Per avere un'idea guarda come viene utilizzato il pacchetto https://packagist.org/packages/twig/twig

    Io lo uso spesso perché lo trovo molto comodo, ma anche se non vuoi usarlo e vuoi farti una implementazione tua ti può essere utile vedere come è strutturata una che funziona molto bene.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.