gpt4 book ai didi

symfony - 让 Controller 只给模板一个值,而不是渲染它 - Symfony2

转载 作者:行者123 更新时间:2023-12-02 05:00:20 27 4
gpt4 key购买 nike

我有一个带导航栏的 Twig 模板,所有其他模板(页面)都包含此模板。我有一个值,它应该等于所有页面。这个值怎么设置?

我在 Controller 中尝试这样的事情:

public function setNotificationsAction() {
$this->setNotifications();
return $this->render('AcmeMyBundle::navbar.html.twig', array(
'debts' => $this->notifications,
));
}

然后在模板中:

<span class="badge badge-important">
{% render(controller('AcmeMyBundle:DebtsLoansController:setNotifications')) %}
{{ debts }}
</span>

我想要的结果是这样的:

<span class="badge badge-important">
3
</span>

但数字应该不同并且 Controller 应该告诉它。

我还尝试创建一个返回值的函数并以上述方式调用它。

我也试过这个语法

{{ render(controller('AcmeMyBundle:DebtsLoansController:setNotifications')) }}

但它也不起作用。

我得到以下错误:

第 6 行的 AcmeMyBundle::navbar.html.twig 中不存在函数“controller”

您是否知道如何实现这一目标而不必编辑每个 Controller 和每个模板:S 在此先感谢您!

最佳答案

好吧,我建议创建您自己的 Twig 扩展。围绕以下内容:

<span class="badge">
{{ acme_notifications() }}
</span>
namespace Acme\DemoBundle\Twig\AcmeDemoExtension

class AcmeDemoExtension extends \Twig_Extension
{
public function getFunctions()
{
return array(
'acme_notifications' => new \Twig_Function_Method($this, 'getNotifications');
);
}

public function getNotifications()
{
$notifications = ...;

return $notifications;
}
}

the Symfony2 documentation 中阅读有关创建自己的 Twig 扩展的更多信息.

关于symfony - 让 Controller 只给模板一个值,而不是渲染它 - Symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17209163/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com