如何根据Symfony中登录的用户设置Twig默认日期和数字格式?

时间:2015-08-14 16:30:22

标签: symfony twig

我希望我的树枝日期和数字(例如{{number | numberformat}})采用我的用户选择的格式。

this question中,建议让听众设置默认的树枝格式。我不完全理解这种方法,所以我不确定是否可以调整此代码以确保日期以所选格式显示? (我的意思是有一个方法User :: getDateFormat()) 或者你会推荐另一种方法吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

也会注入用户,所有人都会像魅力一样工作

namespace MyApp\AppBundle\Services;

use Symfony\Component\HttpKernel\Event\GetResponseEvent;

class TwigDateRequestListener
{
    protected $twig;
    protected $context;

    function __construct(\Twig_Environment $twig, SecurityContext $context) 
    {
        $this->twig = $twig;
        $this->context = $context;
    }

    public function onKernelRequest(GetResponseEvent $event) 
    {
        $user = $this->context->getToken()->getUser();
        $user_date_format = $user->//function to retrieve date settings
        $this->twig->getExtension('core')->setDateFormat('Y-m-d', '%d days');
    }
}

请记住修改服务定义

services:
    twigdate.listener.request:
        class: MyApp\AppBundle\Services\TwigDateRequestListener
        arguments: [@twig, @security.context]
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
引发onKernelRequest事件时调用

kernel.request(查看服务定义,你可能会理解这一点)

每次在每次请求时引发页面时都会引发

kernel.request