【问题标题】:Using php code in .twig file slim framework在 .twig 文件 slim 框架中使用 php 代码
【发布时间】:2016-08-18 19:50:02
【问题描述】:

我是第一次使用 Slim 框架,还使用 ​​twig 进行模板化。我有一个 land.twig 文件,该文件的内容是

 <form action="index.html" method="get">
          <div class="form-group">
            <input type="text" class="form-control" placeholder="Full Name">
          </div>
</form>

我还有一个字符串文件来支持多语言,我调用字符串进行翻译的方式是lang("some_string");land.twig 文件由控制器呈现。我的问题是如何在该树枝文件中的 html 元素的占位符属性中添加 lang("some_string") ?

【问题讨论】:

    标签: php twig slim


    【解决方案1】:

    您可以使用 Twig_SimpleFilter。

    require_once '/path/to/lib/Twig/Autoloader.php';
    Twig_Autoloader::register();
    
    $loader = new Twig_Loader_Filesystem('/path/to/templates');
    // an anonymous function
    $filter = new Twig_SimpleFilter('lang', function ($string) {
        //do stuff
        return $string;
    });
    
    $twig = new Twig_Environment($loader);
    $twig->addFilter($filter);
    

    然后在你的模板中你可以使用

     <input type="text" class="form-control" placeholder="{{ 'Full Name'|lang }}">
    

    由于您使用的是 slim 及其 twig 集成,因此您必须在 twig 组件中添加过滤器。

    // Register component on container
    $container['view'] = function ($container) {
       $view = new \Slim\Views\Twig('path/to/templates', [
           'cache' => 'path/to/cache'
        ]);
        $view->addExtension(new \Slim\Views\TwigExtension(
            $container['router'],
            $container['request']->getUri()
        ));
    
        $filter = new Twig_SimpleFilter('lang', function ($string) {
            //do stuff
            return $string;
        });
    
        $view->getEnvironment()->addFilter($filter);
    
        return $view;
    };
    

    除了那个树枝有一个i18n extension

    【讨论】:

    • 我应该把这个匿名函数放在哪里?在引导文件中?
    • 不管在哪里。无论您在哪里定义您的树枝环境,您都必须在之后定义过滤器。
    • 编辑了帖子。基本上告诉树枝在哪里可以找到模板。 twig.sensiolabs.org/doc/api.html) 当你已经在 twig 中获得了渲染页面时,你应该已经这样做了。
    • 在第 73 行的“land.twig”中收到警告为未知“lang”过滤器。第 73 行是占位符
    • 那么您没有使用 addFilter 将 Twig_SimpleFilter 'lang' 正确添加到您的 twig 环境中,如上所示。由于您使用的是 Slim 的集成,我再次修改了我的示例。
    猜你喜欢
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    相关资源
    最近更新 更多