2010-07-03 13 views
11

Sebbene sia tipicamente propagandato come un sistema di carrello per acquisti completo, Magento è un fantastico framework per l'avvio. Di particolare suggestione è il sistema di layout. In sostanza, viene creata una pagina da "Blocchi" che tutti ereditano da una classe astratta che non presuppone l'uso di file modello. Questi blocchi sono assemblati secondo un layout che è la composizione di un gruppo di file XML che vengono uniti per descrivere una struttura gerarchica di blocchi per ogni pagina (ereditarietà supportata per DRY). Adoro questo sistema ma Magento è un framework molto pesante.Qualche framework PHP che usa un sistema di layout e blocco come Magento?

Esistono altri framework che utilizzano un sistema simile? Cioè layout che sono definiti al di fuori dei file modello come descritto sopra. PHP 5.3 è preferibile ma prenderebbe in considerazione i framework in altre lingue.

+0

quadro Ogni MVC ha una "vista" classe di qualche tipo, ma la maggior parte di questi sono pari a PHP essenzialmente di 'includere' metodo con alcuni metodi di supporto. Il layout e il sistema di blocco di Magento vanno ben oltre ... Non c'è davvero nessun altro framework che si avvicini? – ColinM

+0

Vorrei anche fare una domanda sui blocchi statici e non statici come in Magento ... Non riesco a trovare nessun altro framework che abbia un pannello back-end simile e queste belle funzionalità. – Nasaralla

+0

L'unico sfondo è che il magento è davvero pesante. – Nasaralla

risposta

3

Vorrei restare con Magento se già riusciste a capirlo. Perché perdere tempo ad imparare un altro sistema? Se la velocità è il problema, dedica un po 'di tempo all'ottimizzazione di Magento (c'è un whitepaper sull'argomento che è un buon punto di partenza) e guarda nell'installazione di apc. Dà alle mie installazioni magento una spinta incredibile.

+1

Ho già fatto un sacco di ottimizzazione del sistema, anche usando apc.stat = 0 in produzione ma è ancora piuttosto lento. Questo è il prezzo di un buon quadro, suppongo. -Grazie! – ColinM

1

Guarda Symfony 2.0, è ancora in versione beta. http://symfony-reloaded.org/

+0

Symfony 2 sembra essere essenzialmente HMVC come Kohana 3, che è bello, ma HMVC non gestisce estensioni e iniezioni come il sistema a blocchi di Magento. Inoltre, la metodologia di "-> estendere" di Symfony accoppia strettamente la vista a un layout che blocca lo scopo di HMVC ... – ColinM

0

Attualmente sto lavorando su CakePhp. Usa il sistema di layout. Inoltre ci sono elementi che puoi creare blocchi sul layout. Potrebbe funzionare per te. Inoltre non è così difficile da imparare.

+0

Si chiamano "Elementi", ma l'idea è la stessa. – Kalium

+0

CakePHP sembra essere uguale agli altri .. una classe di visualizzazione che è essenzialmente un "include" glorificato – ColinM

+0

Ma a differenza di Magento, CakePHP non sarà in grado di controllare i file modello utilizzando il layout XML. Per favore correggimi se sbaglio. –

1

Il Zend Framework è uno di questi framework, che ha quasi la stessa struttura di Magento e utilizza l'architettura MVC corretta (come esistono molte altre versioni di architetture MVC, implementate in molti framework PHP disponibili).

Tuttavia, il framework Magento è stato notevolmente modificato da Varien, per soddisfare le sue esigenze, fornendo così il supporto per il controllo dei modelli di moduli & utilizzando i file di configurazione XML. Inoltre penso che questa sia la caratteristica caratteristica unica di Magento.

Quindi, tutto sommato, penso che Magento (con le sue barebone) deve essere utilizzato come già si utilizza & così fa "silvo".

Spero che aiuti.

+0

Standalone Zend sicuramente non si avvicina ai sistemi di layout e blocchi di Magento, ma finora sembra che tu abbia ragione, Magento deve essere unico in questo modo. Tuttavia, continuerò ad accettare una risposta ancora per un po ', nella speranza che ci siano ancora dei buoni suggerimenti. – ColinM

0

Magento è costruito su Zend Framework. Quindi, puoi usare questa struttura. Ma in questi giorni, quasi tutti i framework php utilizzano il sistema di impaginazione.

Si può anche considerare Yii Framework e Doo PHP

+0

Il tipico sistema di layout di framework MVC (inclusi Zend, Yii e Doo) non è nemmeno vicino al sistema di layout di Magento. – ColinM

0

suggerisco di dare un'occhiata a Agavi http://www.agavi.org come sembra come fa ciò che si vuole.

+1

I livelli e i layout di Agavi si avvicinano, ma sembra che siano statici una volta definiti. Inoltre, sembra che le viste nidificate possano essere "tirate" piuttosto che iniettate a meno che non mi sia sfuggito qualcosa. I layout di Magento possono essere estesi e modificati al volo e blocchi come una barra laterale possono essere facilmente estesi semplicemente tramite il sistema di layout. – ColinM

+1

È inoltre possibile definirli in fase di esecuzione. I layout sono solo un modo conveniente di pre-definire i casi d'uso più comuni.È perfettamente normale che le applicazioni definiscano diversi slot in diverse viste, in particolare sul livello più interno (generalmente denominato "contenuto"); pensa a cruscotti con un sacco di widget o qualcosa del genere. Ovviamente ciò significa anche che è sempre possibile passare le istruzioni relative a quali sotto-slot eseguire il rendering in uno slot che si esegue. – dzuelke

2

Dare un'occhiata a Symfony Templating componente. È veloce, leggero e potente.

Se non ti piace il codice PHP all'interno dei modelli, prova Twig.

Entrambe le librerie sono indipendenti, ereditano modelli di supporto e sono facilmente estendibili.

+0

Symfony Templating è molto bello .. Tuttavia, non sembra esserci alcun modo designato per iniettare il contenuto in uno slot al di fuori dei file di modello (ad esempio, aggiungere un blocco a una barra laterale da un controller). Sembra che $ this-> add ('sidebar', 'more content here') faccia il trucco in modo che possa essere facilmente esteso. – ColinM

+0

Puoi incorporare il contenuto dello slot da qualsiasi luogo: all'interno del modello $ this-> set ('barra laterale', 'contenuto barra laterale ...'), e dal controller $ engine-> set ('barra laterale', 'contenuto barra laterale ...'). Ma se vuoi APPENDERE il contenuto in una barra laterale, basta concatenarlo, ad esempio: $ engine-> set ('sidebar', $ engine-> get ('sidebar'). 'Content aggiunto'); – Serg

+0

Symphony non ha un pannello di backend e blocchi statici, ecc ... AFAIK – Nasaralla

3

Non strettamente un framework, ma Drupal finge di essere un framework per applicazioni Web. Puoi spogliare Drupal fino allo scheletro e sviluppare i tuoi moduli su di esso. Usando il suo sistema di blocchi e il motore dei modelli.

3

Sì, Zend Framework può essere sicuramente modificato per consentire un motore di layout in stile Magento, e non deve essere una personalizzazione così complessa come probabilmente Magneto lo rende.

In effetti, ero così costretto a farlo da solo, e non mi permetteva di battermi, ho deciso di iniziare a implementare la stessa forma di motore di layout nella mia libreria che uso per Zend.

Da questo è venuto il mio primo post sul mio nuovo blog, e il mio primo post su SO

proposito, grazie per portare Modman per Magento per la vita di Colin.

Building a Magento-style Layout Engine for your Zend Framework Library

+0

Fantastico, hai qualche possibilità di mettere il tuo lavoro su github in modo che possa guardarlo? – ColinM

Problemi correlati