11
votes

Des cadres PHP utilisant un système de présentation et de bloc tels que Magento?

Bien que cela soit le plus typiquement comme un système de panier d'achat complet, Magento est un cadre génial pour démarrer. Le système de mise en page est particulièrement génial. Essentiellement, une page est créée à partir de "blocs" qui héritent d'une classe abstraite qui n'assume pas l'utilisation de fichiers de modèle. Ces blocs sont assemblés selon une disposition qui est la composition d'un groupe de fichiers XML fusionné pour décrire une structure hiérarchique de blocs pour chaque page (héritage supporté par sec). J'aime ce système mais Magento est un cadre très lourd.

Y a-t-il d'autres cadres utilisant un système similaire? C'est à dire. Mises en page définies en dehors des fichiers de modèle comme décrit ci-dessus. PHP 5.3 est préférable mais envisagerait des cadres dans d'autres langues.


7 commentaires

Chaque framework MVC a une classe de "vue" de quelque sorte, mais la plupart de ces éléments constituent essentiellement la méthode "Inclure" de PHP avec certaines méthodes d'assistance. La mise en page et le système de blocage de Magento sont bien au-delà de cela .. n'y a-t-il pas sérieusement aucun autre cadre qui vient même près?


Je voudrais aussi la question concernant des blocs statiques et non statiques comme dans Magento ... Je ne trouve aucun autre cadre qui a un panel de backend similaire et ces belles caractéristiques.


Le seul ensemble de toile de fond est que Magento est vraiment lourd.


@Colinm Quelle était votre décision finale à l'époque (probablement Magento-Lite) et 2 ans à partir de laquelle vous avez posé cette question quelle serait votre décision maintenant?


@Colinm j'ai travaillé sur Magento quelques années et ça fait beau. Récemment, j'ai commencé à travailler dans Symfony2, qui est également agréable avec le héritage des gabarits et tout sauf que je voudrais mettre en œuvre la mise en page de style Magento dans Symfony2, donc je naviguais pour des ressources sur le sujet.


@Mihaistanu Oui, je suis coincé à Magento-Lite et je n'ai pas regardé en arrière une fois. En regardant dans la future plate-forme Magento 2 et Oro, ressemblent à des plates-formes prometteuses. Magento 2 n'est pas encore stable. ORO a récemment publié un candidat à la libération pour Orrocre, donc je suppose que la plate-forme d'oro est maintenant assez stable.


Je vais travailler sur une mise en œuvre de la mise en œuvre de «mise en page + de la mage», je vous ferai savoir mes progrès si vous êtes intéressé. Je le visible pour Symfony2 mais je l'écrirai comme composant indépendant (peut-être un besoin pour le composant XML / YML Config Reader).


9 Réponses :


1
votes

Regardez Symfony 2.0, il est toujours en version bêta. http://symfony-reloaded.org/


1 commentaires

Symfony 2 semble essentiellement être HMVC comme Kohana 3, qui est agréable, mais HMVC ne gère pas les extensions et les injections comme le système de blocs de Magento. De plus, la méthodologie «-> étendre» de Symfony couplait étroitement une vue sur une mise en page qui défait un peu le but de HMVC ...



3
votes

Je collerais avec Magento si vous avez déjà réussi à vous remettre la tête. Pourquoi perdre du temps à apprendre un autre système? Si la vitesse est le problème, passez un peu de temps à optimiser Magento (il y a un blanc sur le sujet qui est un bon endroit pour commencer) et examinez l'installation de APC . Il donne à mes installations magento un enfer d'un coup de pouce.


1 commentaires

J'ai déjà fait beaucoup d'optimisation du système, même en utilisant APC.Stat = 0 en production, mais il reste assez lent. Tel est le prix d'un bon cadre que je suppose. -Merci!



0
votes

Je travaille actuellement sur CakePHP. Il utilise un système de mise en page. Il existe également des éléments que vous pouvez créer des blocs sur la mise en page. Cela peut fonctionner pour vous. Aussi pas si difficile à apprendre.


4 commentaires

Ils sont appelés "éléments", mais l'idée est la même.


CakePHP semble être identique à celui des autres .. Une classe de vision qui est essentiellement une "incluse" glorifiée


Mais Contrairement à Magento, CakePHP ne sera pas en mesure de contrôler les fichiers de modèle à l'aide de la mise en page XML. Corrigez-moi si j'ai tort, s'il-vous plait.


@Kknowledge_carwing je ne sais pas grand chose sur Magento. Mais le gâteau n'a pas la mise en page de style XML. Il utilise des fichiers CTP pour la visualisation. Vous pouvez avoir raison.



1
votes

le Zend Framework est un tel cadre, qui a presque la même structure que Magento et utilise le bon L'architecture MVC (autant d'autres versions des architectures MVC existent, qui sont mises en œuvre dans de nombreux cadres PHP disponibles).

Toutefois, le cadre de Magento a été grandement modifié par Varien, conformément à ses exigences, offrant ainsi une prise en charge du contrôle des modèles et des modules à l'aide de fichiers de configuration XML. De plus, je pense que c'est la caractéristique unique de Magento Framework.

Donc, dans l'ensemble, je pense que Magento (avec ses barebones) doit être utilisé comme vous utilisez déjà et donc «Silvo».

espère que cela aide.


1 commentaires

Standalone Zend ne s'approche certainement pas par rapport à la mise en page des mises en page et des blocs de Magento, mais jusqu'à présent, on dirait que vous avez raison, Magento doit être unique de cette manière. Cependant, je vais m'empêcher d'accepter une réponse pendant un moment plus longtemps dans l'espoir qu'il y ait encore de bonnes suggestions.



0
votes

Magento est construit sur Zend Framework . Donc, vous pouvez utiliser ce cadre. Mais ces jours-ci, presque tous les cadres PHP utilisent le système de mise en disposition.

Vous pouvez également envisager YII Framework et DOO PHP


1 commentaires

Le système de mise en page typique MVC Framework (y compris Zend, Yii et Doo) n'est même pas proche du système de mise en page de Magento.



0
votes

Vous suggère de jeter un coup d'œil à Agavi http://www.agavi.org comme il ressemble à elle Fait ce que vous voulez.


2 commentaires

Les couches et les mises en page de Agavi se rapprochent, mais il semble qu'ils sont à peu près statiques une fois définis. En outre, il semble que les vues imbriquées ne soient que "tirées" plutôt que injectées à moins que je ne manquais quelque chose. La mise en page de Magento peut être étendue et modifiée sur la mouche et les blocs tels qu'une barre latérale peut facilement être étendue purement via le système de mise en page.


Vous pouvez également les définir au moment de l'exécution. Les mises en page ne sont qu'un moyen pratique de pré-définir les cas d'utilisation les plus courants. Il est parfaitement normal que les applications définissent différentes fentes de différentes vues, en particulier sur la couche la plus interne (typiquement nommée "contenu"); Pensez des tableaux de bord avec un tas de widgets ou quelque chose. Bien entendu, cela signifie également que vous pouvez toujours passer des instructions concernant les sous-emplacements pour rendre à un emplacement que vous exécutez.



2
votes

Jetez un coup d'œil à Modèle de symfony composant. Il est rapide, léger et puissant.

Si vous n'aimez pas le code PHP à l'intérieur des modèles, essayez brinder .

Les deux libs sont autonomes, supportent le héritage de modèle et sont facilement extensibles.


3 commentaires

Modèle de symfony est très agréable .. toutefois, il semble y avoir une manière désignée d'injecter du contenu dans une fente de l'extérieur des fichiers de modèle (par exemple, ajoutez un bloc à une barre latérale à partir d'un contrôleur). On dirait que $ ceci-> Ajouter ("La face latérale", "plus de contenu ici") ferait l'affaire afin que cela puisse probablement être étendu facilement.


Vous pouvez incorporer du contenu à emplacement de n'importe où: Modèle inside $ Ceci-> Set ("Side de la barre latérale", "Contenu de la barre latérale ...") et de Controller $ Engine-> Set ("Set de la barre latérale ...") . Mais si vous voulez ajouter du contenu dans une barre latérale, il suffit de le concaténer, par exemple: $ moteur-> Set ('Sidebar', $ Engine-> Obtenez («Contenu annexé»);


Symphony n'a pas de panneau de contrôle et de blocs statiques, etc. ... AFAIK



3
votes

Pas strictement un cadre, mais Drupal prétend une application Web-application. Vous pouvez désigner Drupal à ses os nus et développer vos propres modules sur le dessus. En utilisant son système de blocs et son moteur de modèles.


0 commentaires

3
votes

Yep, Zend Framework peut certainement être modifié pour permettre un moteur de mise en page de style magentato, et il ne doit pas nécessairement être aussi complexe qu'une personnalisation de Magneto le fait probablement.

En fait, j'étais tellement obligé d'avoir cela moi-même et de ne pas la laisser battre moi, j'ai décidé de commencer à mettre en œuvre la même forme de moteur de layouche moi-même dans ma propre bibliothèque que j'utilise pour Zend.

De cela est venu mon premier article de blog sur mon nouveau blog et mon premier post sur SO

BTW, merci d'avoir apporté Modman pour Magento à la vie Colin.

Construire une magentato Moteur de mise en page de type pour votre bibliothèque Zend Framework


1 commentaires

Cool, toute chance que vous allez mettre votre travail sur github afin que je puisse le regarder?