We are migrating from 100% Symfony to Prestashop 1.7 but we would like to keep and re-use our existing codebase. Hereβs a how-to.
How Symfony works
URL > Router > Controller > Symfony Services calls & DB calls via Doctrine > display Twig template
You go to a URL, which is mapped to a Controller via the @Route
annotation. This Controller will fetch data from Services and directly from the database (through the Doctrine Service π), and then send those data to a template that will display them in a nice way.
How Prestashop works
Pretty much the same way !
URL > Tab > Controller > Prestashop static functions & raw DB calls via PDO > display Smarty template
Call symfony from a Prestashop Controller
In you are on a Backoffice page, the symfony global $kernel
is always available. If youβre on a Frontoffice page, you have to create it manually (see this page on how to work with the symfony kernel in Prestashop):
// for the front
require_once _PS_ROOT_DIR_.'/app/AppKernel.php';
$kernel = new \AppKernel('prod', false); // $env, $debug
$kernel->boot();
// or if for the back
// global $kernel;
$twig = $kernel->getContainer()->get('twig');
$html = $twig->render(_PS_ROOT_DIR_.'/src/YourBundle/Resources/views/Directory1/view1.html.twig', [
'var1' => [],
'var2' => 'your value here',
'var3' => 123,
]);