use*_*704 6 symfony doctrine-orm twig twig-extension
如何在symfony模板中拥有全局变量?我确实读过这个, 但我更喜欢从数据库中获取参数,我认为这个服务将在启动之前加载,然后才能从db中获取任何内容.是否有可能这样做?
Ala*_*blo 11
编辑:使用Symfony 3.4+语法在2019年更新.
注入实体管理器创建一个Twig扩展:
Fuz/AppBundle/Twig/Extension/DatabaseGlobalsExtension.php
<?php
namespace Fuz\AppBundle\Twig\Extension;
use Doctrine\ORM\EntityManager;
use Twig\Extension\AbstractExtension;
use Twig\Extension\GlobalsInterface;
class DatabaseGlobalsExtension extends AbstractExtension implements GlobalsInterface
{
protected $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function getGlobals()
{
return [
'myVariable' => $this->em->getRepository(FuzAppBundle\Entity::class)->getSomeData(),
];
}
}
Run Code Online (Sandbox Code Playgroud)
在您注册您的扩展Fuz/AppBundle/Resources/config/services.yml:
services:
_defaults:
autowire: true
autoconfigure: true
Fuz\AppBundle\Twig\Extension\DatabaseGlobalsExtension: ~
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用实体管理器执行所需的请求.
不要忘记替换路径和名称空间以与您的应用程序匹配.
归档时间: |
|
查看次数: |
3939 次 |
最近记录: |