hxgf/slime-render

PHP 抽象函数,用于简化 Slim 框架(使用 Handlebars(LightnCandy))的视图渲染。

1.3.3 2024-09-07 20:00 UTC

This package is auto-updated.

Last update: 2024-09-07 20:03:23 UTC


README

PHP 抽象函数,用于简化 Slim 框架(版本 v4)使用纯文本、HTML、JSON 和 Handlebars(使用 LightnCandy)进行视图渲染。

这些函数旨在提供简化和标准化的接口,以便以 PSR-7 对象的形式渲染各种类型的数据驱动响应,以便与 Slim 一起使用。

包含 Slim 应用程序的 Slime 模板

安装

使用 composer 简单安装

composer require jyoungblood/slime-render
use Slime\render;
require __DIR__ . '/vendor/autoload.php';

要求

使用方法

render::html($request, $response, $string, $status = 200)

将字符串渲染为 HTML。返回一个标准的 Slim(PSR-7)响应对象,带有可选的 HTTP 状态码(默认为 200)。

$app->get('/', function ($req, $res, $args) {

  return render::html($req, $res, '<h2>Hey whats up</h2>');

});

此外,还可以指定一个 HTML 文件的路径,以加载和渲染字符串

$app->get('/', function ($req, $res, $args) {

  return render::html($req, $res, '/hey/whats-up.html');

});

render::text($request, $response, $string, $status = 200)

将字符串渲染为纯文本。返回一个标准的 Slim(PSR-7)响应对象,带有可选的 HTTP 状态码(默认为 200)。

$app->get('/', function ($req, $res, $args) {

  return render::text($req, $res, 'Hey whats up');

});

render::hbs($request, $response, $parameters, $status = 200)

使用包含任何部分和全局 locals 变量数组的数组数据渲染特定的 Handlebars 模板。返回一个标准的 Slim(PSR-7)响应对象,带有可选的 HTTP 状态码(默认为 200)。

$app->get('/', function ($req, $res, $args) {

  return render::hbs($req, $res, [
    'template' => 'index',
    'layout' => '_layouts/base', // optional "wrapper" layout template
    'title' => 'Page title', // for HTML <title> tag
    'data' => [
      'name' => 'Ringo',
      'friends' => [
        'Paul', 'George', 'John'
      ]
    ],
  ], 200); // optional status code, 200 by default

});

解析函数期望模板位于 templates 目录中,文件扩展名为 html。这可以通过在全局 settings 数组中定义这些变量来自定义

$GLOBALS['settings']['templates']['path'] = 'pages';
$GLOBALS['settings']['templates']['extension'] = 'hbs';

此外,还可以添加一个 locals 数组,以便在所有模板中使变量可用

$GLOBALS['locals'] = [
  'year' => date('Y'),
  'site_title' => 'Web Site Title',
  'site_code' => 'WST',
  'site_domain' => 'example.com',
];
Welcome to {{locals.site_title}}, the year is {{locals.year}}!

PHP $_GET 和 $_POST 变量的参数自动对使用此函数渲染的模板可用,使用变量 {{GET}}{{POST}}

<!-- assuming a url like /hello/?name=Delilah&location=New%20York%20City -->
Hey there, {{GET.name}}, what's it like in {{GET.location}}?

查看 Handlebars 烹饪书,了解您可以使用 LightnCandy 和 Handlebars 做的所有事情。

此外,我们还包含了一些辅助函数。

date 辅助函数将 PHP date() 函数应用于给定的变量或字符串(或 now 关键字表示当前时间)

Date from unix timestamp: {{date unix_ts_var "d/m/Y"}}
Current date: {{date "now" "d/m/Y"}} <!-- use the "now" keyword instead of a variable to use the current time -->
Date from non-unix timestamp: {{date non_unix_ts_var "d/m/Y" "convert"}} <!-- add the "convert" parameter to convert the variable to unix time using strtotime() -->

#is 块辅助函数允许进行基本条件逻辑

Is it 1981? {{#is locals.year "==" "1981"}} Yes! {{else}} No! {{/is}}

自定义辅助函数很容易创建。请查看这些辅助函数是如何在 initialize_handlebars_helpers() 中定义的。Handlebars 烹饪书还包括创建 自定义辅助函数自定义块辅助函数 的参考。

render::handlebars($parameters)

render::hbs() 相同,使用数据数组渲染特定的 Handlebars 模板,但返回原始 HTML 而不是 PSR-7 响应。

$app->get('/', function ($req, $res, $args) {

  echo render::handlebars([
    'template' => 'email/test',
    'data' => [
      'link' => 'https://jy.hxgf.io',
    ]
  ]);

  return $res;
});

render::redirect($request, $response, $string, $status = 302)

以带有可选 HTTP 状态码的标准 Slim(PSR-7)响应对象的形式渲染重定向。

  return render::redirect($req, $res, 'https://google.com/');

render::json($request, $response, $data, $status = 200)

将数组或数据渲染为带有 application/json 内容类型和可选 HTTP 状态码的标准 Slim(PSR-7)响应对象。

$app->get('/json/', function ($req, $res, $args) {

  $data = [
    'name' => 'Ringo',
    'friends' => [
      'Paul', 'George', 'John'
    ]
  ];

  return render::json($req, $res, $data);

});

render::lightncandy_html($parameters)($data)

准备和编译特定的 Handlebars 模板,包括任何部分和全局 locals 变量数组。
该函数由 render::hbs() 自动调用,但在需要的情况下也可以作为一个独立函数使用。

$args = [
  'template' => 'index',
  'layout' => '_layouts/base',
  'title' => 'Page title',
];

$data = [
  'name' => 'Ringo',
  'friends' => [
    'Paul', 'George', 'John'
  ]
];

echo render::lightncandy_html($args)($data);

render::initialize_handlebars_helpers()

lightncandy_html() 内部使用。定义了一些自定义的 Handlebars 辅助函数,供 LightnCandy 编译器使用。