【问题标题】:Any PHP Frameworks that use a Layout and Block system like Magento? [closed]任何使用像 Magento 这样的布局和块系统的 PHP 框架? [关闭]
【发布时间】:2011-03-11 07:59:33
【问题描述】:

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

还有其他使用类似系统的框架吗? IE。如上所述在模板文件之外定义的布局。 PHP 5.3 更可取,但会考虑其他语言的框架。

【问题讨论】:

  • 每个 MVC 框架都有某种“视图”类,但其中大部分基本上相当于 PHP 的“包含”方法和一些辅助方法。 Magento 的布局和块系统远不止于此。真的没有其他框架甚至可以接近吗?
  • 我还想问关于像 magento 中的静态和非静态块的问题...我找不到任何其他具有类似后端面板和这些不错功能的框架。
  • 唯一的背景是magento真的很重。
  • @ColinM 您当时的最终决定是什么(可能是 Magento-Lite)以及距您提出这个问题 2 年后现在您的决定是什么?
  • @ColinM 我在 Magento 上工作了几年,感觉很好。最近我开始在 Symfony2 中工作,它在模板继承方面也很不错,但我想在 Symfony2 中实现 Magento 样式布局,所以我正在浏览有关该主题的资源。

标签: php layout frameworks magento


【解决方案1】:

如果您已经设法了解它,我会坚持使用 magento。为什么要浪费时间学习另一个系统?如果速度是问题,请花一些时间优化 magento(主题上有一个 whitepaper,这是一个很好的起点)并考虑安装 apc。它给我的 magento 安装带来了极大的提升。

【讨论】:

  • 我已经做了很多系统优化,即使在生产中使用 apc.stat = 0 但它仍然很慢。我想这就是一个好的框架的代价。 -谢谢!
【解决方案2】:

严格来说不是一个框架,但Drupal 伪装成一个网络应用程序框架。您可以剥离 Drupal 的基本框架,并在其上开发您自己的模块。使用它的块系统和模板引擎。

【讨论】:

    【解决方案3】:

    是的,Zend 框架绝对可以修改为允许 Magneto 风格的布局引擎,而且它不必像 Magneto 那样复杂的自定义。

    事实上,我是迫不及待地想要自己拥有它,并且不让它打败我,我决定开始在我自己用于 Zend 的库中自己实现相同形式的布局引擎。

    由此而来的是我在新博客上的第一篇博文,也是我在 SO 上的第一篇博文

    顺便说一句,感谢 Colin 为 Magento 带来了 ModMan。

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

    【讨论】:

    • 酷,你有没有机会把你的作品放到 github 上让我看?
    【解决方案4】:

    看看 Symfony Templating 组件。它快速、轻便且功能强大。

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

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

    【讨论】:

    • Symfony 模板非常好。但是,似乎没有指定的方法可以从模板文件外部将内容注入插槽(例如,从控制器向侧边栏添加块)。似乎 $this->add('sidebar','more content here') 可以解决问题,因此可以轻松扩展。
    • 您可以从任何地方嵌入插槽内容:在模板 $this->set('sidebar', 'sidebar content...') 中,从控制器 $engine->set('sidebar', '侧边栏内容...')。但是,如果您想将内容附加到侧边栏,只需将其连接起来,例如: $engine->set('sidebar', $engine->get('sidebar') . ' appended content');
    • Symphony 没有后端面板和静态块等... AFAIK
    【解决方案5】:

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

    【讨论】:

    • Symfony 2 看起来本质上是类似于 Kohana 3 的 HMVC,这很好,但是 HMVC 不像 Magento 的块系统那样处理扩展和注入。此外,Symfony 的“->extend”方法将视图与布局紧密结合,这有点违背 HMVC 的目的......
    【解决方案6】:

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

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

    所以,总而言之,我认为 Magento(及其准系统)必须像您已经在使用的那样使用,“silvo”也是如此。

    希望对你有帮助。

    【讨论】:

    • 独立的 Zend 在 Magento 的布局和块系统方面肯定没有接近,但到目前为止看起来你是对的,Magento 在这方面一定是独一无二的。不过,我会暂缓接受答案,希望仍有一些好的建议。
    【解决方案7】:

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

    【讨论】:

    • 它们被称为“元素”,但概念是一样的。
    • CakePHP 看起来和其他的一样......一个视图类,本质上是一个美化的“包含”
    • 但与 Magento 不同的是,CakePHP 将无法使用布局 XML 控制模板文件。如果我错了,请纠正我。
    • @Knowledge_Craving 我对 Magento 了解不多。但是 Cake 没有 XML 样式的布局。它使用 ctp 文件进行查看。你可能是对的。
    【解决方案8】:

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

    你也可以考虑Yii FrameworkDoo PHP

    【讨论】:

    • 典型的 MVC 框架布局系统(包括 Zend、Yii 和 Doo)甚至比不上 Magento 的布局系统..
    【解决方案9】:

    建议你看看 Agavi http://www.agavi.org,因为它听起来像你想要的。

    【讨论】:

    • Agavi 的图层和布局很接近,但是一旦定义它们看起来几乎是静态的。此外,嵌套视图似乎只能“拉入”而不是注入,除非我错过了什么。 Magento 的布局可以动态扩展和修改,侧边栏等块可以通过布局系统轻松扩展。
    • 您也可以在运行时定义它们。布局只是预定义最常见用例的一种便捷方式。应用程序在不同的视图中定义不同的槽是完全正常的,尤其是在最内层(通常命名为“内容”);想想带有一堆小部件或其他东西的仪表板。当然,这也意味着您始终可以将有关要渲染哪些子插槽的指令传递给您执行的插槽。
    猜你喜欢
    • 2016-08-31
    • 2011-02-02
    • 2010-11-17
    • 2012-03-20
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    相关资源
    最近更新 更多