Domanda

Ho un sito Web prototipo scritto in PHP. Ultimamente ho riscritto il codice per separare la logica dalle operazioni di layout e database. Quindi ora ho qualcosa come il design del codice MVC.

Ora ciò che mi dà fastidio è che in MVC avrò molti file e ognuno mostrerà qualcosa quando combinato con altri (modello + vista + controller). Quindi ho capito che sarebbe stato utile creare qualcosa come i widget delle mie parti MVC.

Ad esempio, quando ho MVC di visualizzazione dei prodotti, creerei un file PHP che combini i file di parti MVC in modo tale da visualizzare prodotti basati sui valori GET che passo a questo nuovo file PHP.

Quello che vorrei realizzare in questo modo è che qualsiasi widget, sottoparte del sito Web sarebbe disponibile per essere visualizzato separatamente e utilizzato separatamente da altre parti. Quindi sarebbe qualcosa come i widget o il design del browser Firefox.

Quindi sarei in grado di testare ogni parte del sito Web separatamente, e di combinare solo queste parti nella progettazione della pagina del sito Web attuale. Quindi anche i test degli utenti sarebbero più facili e i file di presentazione sarebbero molto brevi e facili da capire.

Vorrei sapere cosa ne pensi. Non voglio cadere in nessun buco nelle cose del design e penso che questo sia il momento che sarà importante in futuro per mantenere facile il codice del sito Web.

Sono corretto?

È stato utile?

Soluzione

  

MVC avrò molti file e ognuno mostrerà qualcosa quando combinato con altri (modello + vista + controller)

Sembra che tu non abbia capito bene il modello MVC. Solo le viste hanno contenuti o "visualizzano qualcosa".

In base a ciò, puoi creare azioni che creano solo una piccola parte di contenuto simile a un widget, che può quindi essere combinata nel tuo layout.

Vorrei raccomandare la lettura del Zend_Layout Quick Start .

Altri suggerimenti

La risposta al tuo problema è visualizza composizione .

Ti suggerisco di dividere l'intero schermo in pezzi più piccoli: barra superiore, barra di navigazione di secondo livello, elenco prodotti, area di anteprima e così via. Questi potrebbero essere forniti da viste separate, visualizzare helper o metodi aggiuntivi nel controller. Quindi un'azione del controller comporre pezzi in una singola schermata usando un layout HTML semplicistico.

Eg. per la barra superiore statica potrebbe essere una vista specializzata. Per un elenco di prodotti dinamico potrebbe essere il metodo del controller getProductsList ($ categoryId) che fornisce una vista complessa. L'anteprima del prodotto può essere fornita dal supporto per la visualizzazione. Vedi il seguente esempio:

// inside class ProductsController
public function index($categoryId, $productId = null) {

    // specialised view
    $topBar = new TopBarView();
    $topBar->selected = 'products';

    // helper method
    $list = $this->getProductsList($categoryId);

    // helper object
    $previewHelper = new PreviewHelper($productId);
    $preview = $previewHelper->getView();

    // view composition
    $view = new View('path/to/template.tpl');
    $view->add($topBar);
    $view->add($list);
    $view->add($preview);
    return $view;

}

Questo è solo un esempio per illustrare come funziona la composizione.

Il vantaggio nascosto di disporre del metodo per la consegna dei widget (ovvero l'elenco dei prodotti) è che potrebbe essere riutilizzato per supportare Ajax. La modifica della categoria richiederebbe una chiamata Ajax al metodo getProductsList con un nuovo ID categoria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top