0

将一些 Symfony 2 组件/捆绑包集成到 Magento 框架有多容易?

我特别在想树枝模板引擎,尽管这个问题通常适用于任何组件?

4

2 回答 2

0

一般来说,使用树枝非常容易。您需要创建一个自己的块来覆盖 Mage_Core_Block_Template 中定义的一些块方法,或者您更深入并直接扩展 Mage_Core_Block_Abstract 以编写自己的 _toHtml() 方法。

我不知道 twig 默认提供哪些功能,但一些 Symfony 的功能可能更难实现。

最大的问题是注册自动加载器,因为您需要为此解决 magento 的限制。但是存在一种常见的解决方案,您可以取消注册自动加载器,并在注册自动加载器后重新注册 magento 。如何解决这个问题是你的决定,但是在执行 magento 自动加载器之后,没有其他人有机会自动加载。此外,我不确定由不同的自动加载器引起的安全问题,因为 magento 分别处理模块和控制器的自动加载。

绝对不超过 50-60 行代码,但您需要了解一点关于 magento 的知识才能正确实现它。

于 2012-12-05T00:12:36.677 回答
0

在任何 php 项目中使用 twig 模板引擎都很容易,因为它是一个独立的组件,与 symfony 无关。

使用 twig 授权您的项目需要以下三个简单步骤:

首先您需要获取代码,如此所述,然后您需要初始化自动加载和模板引擎:

// setup autoloader
require_once '/path/to/lib/Twig/Autoloader.php';
Twig_Autoloader::register();

// initialize template engine
$loader = new Twig_Loader_Filesystem('/path/to/templates');
$twig = new Twig_Environment($loader, array(
    'cache' => '/path/to/compilation_cache',
));

然后你可以在项目的任何地方使用它来渲染模板:

// load a template
$template = $twig->loadTemplate('index.html');

// render the template
echo $template->render(array('the' => 'variables', 'go' => 'here'));

至于 symfony 的其他部分,这些组件也可以很容易地集成到其他项目中,因为它们就是为此而设计的,请查看组件页面

使用 bundle 有点复杂,因为它们与 symfony 核心绑定,并且需要一个完全自举的 symfony 实例,这有点开销,但也没有问题。看看我在这个问题中的回答,它是关于从旧版应用程序访问 symfony 功能的。

于 2012-06-19T11:21:03.017 回答