Насколько легко было бы интегрировать некоторые компоненты/связки Symfony 2 в платформу Magento?
Я имею в виду, в частности, механизм шаблонов веток, хотя вопрос обычно относится к любым компонентам?
Насколько легко было бы интегрировать некоторые компоненты/связки Symfony 2 в платформу Magento?
Я имею в виду, в частности, механизм шаблонов веток, хотя вопрос обычно относится к любым компонентам?
использовать механизм шаблонов twig в любом php-проекте очень просто, потому что это автономный компонент, не привязанный к 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, компоненты также могут быть легко интегрированы в другие проекты, поскольку они предназначены для этого, взгляните на страница компонентов.
использование пакетов немного сложнее, потому что они привязаны к ядру symfony и требуют полностью загруженного экземпляра symfony, что немного накладно, но тоже не проблема. взгляните на мой ответ в этот вопрос о доступе к функциям Symfony из устаревшего приложения.
Использование twig в целом очень просто. Вам нужно создать собственный блок, который перезаписывает некоторые методы блока, определенные в Mage_Core_Block_Template. Или вы идете на уровень глубже и напрямую расширяете Mage_Core_Block_Abstract, чтобы написать собственный метод _toHtml().
Я не знаю, какие функции twig предлагает по умолчанию, но некоторые из функций Symfony реализовать немного сложнее.
Самой большой проблемой будет регистрация автозагрузчика, так как для этого вам нужно обойти ограничение magento. Но существует распространенное решение, при котором вы отменяете регистрацию автозагрузчика, а после регистрации автозагрузчика перерегистрируете magento. Как вы решите это, ваше решение, но после того, как автозагрузчик magento будет выполнен, ни у кого другого нет шансов на автозагрузку. Также я не уверен в проблемах безопасности, вызванных другим автозагрузчиком, поскольку magento обрабатывает автозагрузку модуля и контроллера отдельно.
Конечно, не более 50-60 строк кода, но вам нужно немного знать о magento, чтобы правильно его реализовать.