我正在设置全局设置以在所有树枝模板中实现此目的。因此,我还可以例如设置error.html.twig页面。
我发现描述很简短。您可以在twig.yaml中实现全局变量,并为数据库中的变量编写服务。见下面我的尝试:)但是它还没有工作:(
我认为我的服务不是书面的。请帮忙 :)
twig:
globals:
setting: '@App\Service\Websitesettings'
我的服务档案
<?php
namespace App\Service;
use App\Entity\Sitesetting;
class Websitesettings
{
public function setting()
{
$setting = $this->getDoctrine()->getRepository(Sitesetting::class)
->findAll()[0];
return $setting;
}
}
随机类不能只$this->getDoctrine()
在其方法内部调用并期望获得一些对象。PHP现在将如何从中获取信息?代码检查/反射甚至将如何假设,getDoctrine
应该如何定义?
相反,您应该EntityManagerInterface
在构造函数中注入,因为这样,Symfony(框架)及其自动装配可以合理地为您的服务标识期望的参数,并且类型提示将告诉它要注入的内容:
<?php
namespace App\Service;
use Doctrine
use Doctrine\ORM\EntityManagerInterface;
class Websitesettings
{
/** @var EntityManagerInterface */
public $em;
public function __construct(EntityManagerInterface $em) {
$this->em = $em;
}
public function setting()
{
$setting = $this->em->getRepository(Sitesetting::class)
->findAll()[0];
return $setting;
}
}
希望能有所帮助。
但是,潜在的问题是:您确定这是最好的方法吗?显然,您有一整个表专用于您的网站设置,并且显然只包含一行(这很可悲)。Yaml和Symfony具有一些非常好的功能,您可以使用它们在配置本身中或通过环境变量提供某些参数。但这超出了问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句