我在布局中获得了一个动态内容,它从数据库中获取值。实现此目的的最佳方法是什么,而不是从控制器传递值。
是否可以从视图中调用实体?我正在使用php模板。
答案 0 :(得分:2)
在MVC上下文中没有使用控制器来调用模型实体是没有意义的,至少你可以使用对控制器的ajax调用来获取更新的内容,该控制器返回JsonResponse到避免页面刷新
答案 1 :(得分:1)
这可以通过树枝延伸来实现。
注册枝条扩展名 TWIG EXTENSION
传递给__constructor() - @doctrine服务
services.yml
my.twig.extension:
class: twig\namespace\path
arguments:
kernel: "@kernel"
doctrine: "@doctrine"
tags:
- { name: twig.extension }
Constructor of the new twig extension
protected $kernel;
protected $doctrine;
public function __construct($kernel, $doctrine)
{
$this->kernel = $kernel;
$this->doctrine = $doctrine;
}
写一些方法:
/** @var string $repository. Example: AppBundle:Product' */
public function myEntity($repository)
{
$manager = $this->doctrine->getManager();
return $manager->getRepository($repository);
}
在twig扩展名中注册myEntity方法:
public function getFunctions()
{
return array(
'myEntity' => new \Twig_Function_Method($this, 'myEntity'),
);
}
现在,在您的twig模板中,您可以访问任何存储库:
For example:
{#
myEntity('SomeBundle:coolEntity').find()
myEntity('SomeBundle:coolEntity').findAll()
myEntity('SomeBundle:coolEntity').findBy()
...
#}
{% for item in myEntity('SomeBundle:coolEntity').findAll() %}
{{ item.getId() }}
{% endfor %}