问题 任何使用像Magento这样的布局和块系统的PHP框架? [关闭]


虽然它最常被吹捧为功能齐全的购物车系统,但Magento是一个非常棒的启动框架。特别令人敬畏的是布局系统。本质上,页面是从“块”创建的,它们都是从一个不假定使用模板文件的抽象类继承的。这些块根据布局组装,该布局是合并在一起的一堆XML文件的组合,以描述每个页面的块的层次结构(DRY支持的继承)。我喜欢这个系统,但Magento是一个非常繁重的框架。

是否有其他框架使用类似的系统?即如上所述在模板文件之外定义的布局。 PHP 5.3是首选,但会考虑其他语言的框架。


11370
2017-07-03 00:19


起源

每个MVC框架都有一个某种类型的“View”类,但其中大部分基本上都是PHP的'include'方法和一些辅助方法。 Magento的布局和阻止系统远远超出了这个范围。是否真的没有其他框架甚至接近? - ColinM
我还想关于静态和非静态块的问题,比如magento ...我找不到任何其他具有类似后端面板和这些优秀功能的框架。 - Nasaralla
唯一的背景是magento真的很重。 - Nasaralla
@ColinM你当时的最终决定(可能是Magento-Lite)和你问这个问题后2年你的决定是什么? - Mihai Stancu
@ColinM我在Magento工作了几年,这很不错。最近我开始在Symfony2工作,这也很好用于模板继承,但我想在Symfony2中实现Magento样式布局,所以我正在浏览有关该主题的资源。 - Mihai Stancu


答案:


如果你已经设法绕过它,我会坚持使用magento。为什么要浪费时间学习另一个系如果速度是问题,花一些时间优化magento(有一个 白皮书 关于这个主题,这是一个很好的起点)并考虑安装 APC。它为我的magento装置提供了一个推动力。


3
2017-07-04 15:09



我已经做了很多系统优化,即使在生产中使用apc.stat = 0,但它仍然很慢。这就是我认为的好框架的代价。 -谢谢! - ColinM


不是严格的框架,但是 Drupal的 假装是一个Web应用程序框架。您可以将Drupal剥离为裸露的骨骼并在其上开发自己的模块。使用其块系统和模板引擎。


3
2017-07-21 14:38





是的,Zend Framework绝对可以修改为允许Magento风格的布局引擎,并且它不必像Magneto那样复杂的定制。

事实上,我自己也不得不这样做,而不是让它击败我,我决定开始在我用于Zend的库中自己实现相同形式的布局引擎。

从此开始我的新博客上的第一篇博文,以及我在SO上发表的第一篇博文

顺便说一下,感谢为Magento带来ModMan生活科林。

为Zend Framework库构建Magento样式的布局引擎


3
2017-07-05 05:48



很酷,你有机会把你的工作放在github上所以我可以看吗? - ColinM


看一眼 Symfony Templating 零件。它快速,轻便且功能强大。

如果您不喜欢模板中的PHP代码,请尝试 枝条

这两个库都是独立的,支持模板继承,并且易于扩展。


2
2017-07-21 05:16



Symfony Templating非常好。但是,似乎没有指定的方法将内容从模板文件外部注入到插槽中(例如,从控制器向侧栏添加块)。好像$ this-> add('sidebar','more content here')可以做到这一点,因此可能很容易扩展。 - ColinM
您可以从任何地方嵌入插槽内容:内部模板$ this-> set('sidebar','sidebar content ...'),以及来自控制器$ engine-> set('sidebar','sidebar content ...') 。但是如果你想将内容附加到侧边栏,只需将其连接起来,例如:$ engine-> set('sidebar',$ engine-> get('sidebar')。'附加内容'); - Sergiy Sokolenko
Symphony没有后端面板和静态块等...... AFAIK - Nasaralla


看看Symfony 2.0,它还处于测试阶段。 http://symfony-reloaded.org/


1
2017-07-03 21:06



Symfony 2似乎基本上是像Kohana 3一样的HMVC,这很不错,但是HMVC不像Magento的块系统那样处理扩展和注入。此外,Symfony的“ - >扩展”方法将视图与布局相结合,这有点挫败了HMVC的目的...... - ColinM


Zend框架 是一个这样的框架,它具有与Magento几乎相同的结构并使用正确的MVC架构(存在许多其他版本的MVC架构,这些架构在许多可用的PHP框架中实现)。

但是,Varien已经对Magento框架进行了大量修改,以满足其要求,从而为使用XML配置文件控制模板和模块提供支持。另外我认为这是Magento框架的独特特征。

所以,总而言之,我认为必须使用Magento(带有它的准系统),因为你已经在使用了“silvo”。

希望能帮助到你。


1
2017-07-06 07:39



独立Zend绝对不会接近Magento的布局和阻挡系统,但到目前为止看起来你是对的,Magento必须以这种方式独一无二。但是,我会暂时接受一个答案,希望还有一些好的建议。 - ColinM


我目前正在开发CakePhp。它使用布局系统。还有一些元素可以在布局上创建块。它可能适合你。也不是那么难学。


0
2017-07-05 13:04



他们被称为“元素”,但想法是一样的。 - Kalium
CakePHP看起来和其他人一样..一个视图类本质上是一个美化的“包含” - ColinM
但与Magento不同,CakePHP将无法使用布局XML控制模板文件。如果我错了,请纠正我。 - Knowledge Craving
@Knowledge_Craving我对Magento不太了解。但Cake没有XML样式布局。它使用ctp文件进行查看。也许你是对的。 - Kemal


Magento是建立在 Zend框架。所以,你可以使用这个框架。但是现在,几乎所有的php框架都使用布局系统。

你也可以考虑一下 Yii框架 和 Doo PHP


0
2017-07-06 08:50



典型的MVC框架布局系统(包括Zend,Yii和Doo)甚至都不接近Magento的布局系统。 - ColinM