ujpef / latte-view
Latte 瘦型包装器
0.0.4
2019-03-05 14:54 UTC
Requires
- latte/latte: 2.4
- psr/http-message: ^1.0
This package is auto-updated.
Last update: 2024-09-29 04:19:48 UTC
README
Latte 模板引擎包装器,用于Slim 微型框架。
您可以使用这个小库将 Latte 模板集成到基于 Slim 框架的项目中。
该项目是为布尔诺的 Mendel 大学APV 课程而创建的。
安装
您可以使用 Composer 下载此库
composer require ujpef/latte-view
方法
__construct(Latte\Engine $latte, $pathToTemplates)
创建 Latte 包装器的实例。传递配置好的 Latte 引擎实例。在传递给包装器之前,您应该配置 Latte 引擎:设置模板路径和设置模板的缓存文件夹。
$engine = new \Latte\Engine\Engine(); $engine->setLoader(new \Latte\Loaders\FileLoader(__DIR__ . '/../templates/')); $engine->setTempDirectory(__DIR__ . '/../cache'); $latteView = new \Ujpef\LatteView\LatteView($engine);
addParam($name, $param)
创建名为 $name
的模板变量,其值为 $param
。
addParams(array $params)
将多个值传递给模板。$params
数组必须是关联数组。
render(Response $response, $name, array $params = [])
使用由 $params
关联数组提供的模板变量集渲染由 $name
给定的模板,并创建新的 Response 对象。
返回新的 Response 对象实例,可以从路由或中间件返回。
addFilter($title, callable $callback)
添加自定义 Latte 过滤器 - {$variable|customFilter}
。
addMacro($name, callable $callback)
添加自定义 Latte 宏 - {customMacro param}
。
Slim 框架集成
定义 Slim 框架依赖项(如有需要,更改模板源文件夹和缓存目录位置)
use Latte\Engine; use Latte\Loaders\FileLoader; use Ujpef\LatteView; $container['view'] = function ($container) use ($settings) { $engine = new Engine(); $engine->setLoader(new FileLoader(__DIR__ . '/../templates/')); $engine->setTempDirectory(__DIR__ . '/../cache'); $latteView = new LatteView($engine); return $latteView; };
要调用 Latte 模板渲染的结果,请调用 render()
方法。
$app->get('/[{name}]', function (Request $request, Response $response, $args) { $tplVars = [ 'variable' => 123 ]; return $this->view->render($response, 'index.latte', $tplVars); })->setName('index');
在模板中使用
<!DOCTYPE html> <html> <head> <title>test template</title> </head> <body> contents of variable: {$variable} </body> </html>
使用命名路由
要在 Latte 宏中像这样使用 Slim 的内置 路由器(例如 {link routeName}
),请在依赖定义中添加以下行
use Latte\Engine; use Latte\MacroNode; use Latte\PhpWriter; use Latte\Loaders\FileLoader; use Ujpef\LatteView; $container['view'] = function ($container) use ($settings) { $engine = new Engine(); $engine->setLoader(new FileLoader(__DIR__ . '/../templates/')); $engine->setTempDirectory(__DIR__ . '/../cache'); $latteView = new LatteView($engine); $latteView->addParam('router', $container->router); $latteView->addMacro('link', function (MacroNode $node, PhpWriter $writer) { if (strpos($node->args, ' ') !== false) { return $writer->write("echo \$router->pathFor(%node.word, %node.args);"); } else { return $writer->write("echo \$router->pathFor(%node.word);"); } }); return $latteView; };
请记住为您的路由设置名称
$app->get('/test', function (Request $request, Response $response, $args) { //route implementation })->setName('routeName');
这也适用于路由占位符
$app->get('/test/{something}', function (Request $request, Response $response, $args) { //route implementation })->setName('routeName');
在模板中使用
<a href="{link routeName ['something' => 123]}">link</a>