php - 在 .twig 文件 slim 框架中使用 php 代码

标签 php twig slim

我是第一次使用 Slim Framework,还使用 ​​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 文件由 Controller 渲染。我的问题是如何在该 twig 文件中的 html 元素的占位符属性中添加 lang("some_string") ?

最佳答案

您可以使用 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;
};

除了那根 Twig 有一个 i18n extension

关于php - 在 .twig 文件 slim 框架中使用 php 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39014426/

相关文章:

php - 在表格行中找到一个值,如果存在,则更新它

php - 在 MySQL 中计算 z 值

symfony - 用Twig在for循环内创建一个数组

apache - htaccess中的HTTP授权规则-转换为Nginx

php - 在 Azure 上开发 PHP-MySQL 应用程序

php - 重定向后在 codeigniter 中销毁 session

symfony - 检查是否定义了功能/扩展

php - 获取模板目录木材/ Twig

php - jQuery ajax() POST 到 Slim PHP 框架

javascript - Slim PHP 框架使用 mySQL 注册系统