truemedia / handlelars
Handlebars 的 Laravel 5 封装
Requires
- php: >=5.4.0
- illuminate/filesystem: ~5.0
- illuminate/support: ~5.0
- illuminate/view: ~5.0
- mustache/mustache: ~2.7
This package is not auto-updated.
Last update: 2024-09-28 17:33:16 UTC
README
A Laravel 的封装,用于 Lightncandy,这是一个 https://handlebars.node.org.cn/ 的 PHP 实现
致谢
- 原始归功于该仓库的创建者 https://github.com/brightmachine/laratash,我所做的一切只是将所有内容重命名为 handlebars 并配置 handlebars PHP 库。
支持
Laravel 5
Handlebars 2.0+
安装
将 handlelars 添加为依赖项到您的 composer.json
文件
"require": { "laravel/framework": "~5.0", "truemedia/handlelars": "dev-master" }
运行 composer update
,或者如果这是一个全新的项目,运行 composer install
添加服务提供者
打开:config/app.php
... 'Handlelars\HandlelarsServiceProvider', ...
您已经设置好了!
使用方法
Handlelars 是一个仅用于将 Lightncandy 库集成到 Laravel 5+ 的包装器。
Handlelars 与 Laravel 视图类注册自身,提供与 Laravel 的无缝集成。您可以使用 Handlebars 就像使用 Blade 一样!Laravel 视图类将根据视图的文件扩展名选择正确的模板引擎。所以您要做的只是确保您的视图有 .hbs
文件扩展名。Handlelars 将处理其余的部分。
您甚至可以混合和匹配模板引擎。例如,您可能有一个 Blade 布局文件,您想要嵌套一个 Handlebars 视图,这是可以的!Handlebars 视图将被渲染到传递给视图的任何部分的变量中。例如,如果您这样做:
$view->nest('content', 'some.view'); $view->nest('sidebar', 'some.sidebar');
解析后的 some.view
文件的 内容将在模板文件下的一个名为 $content
的变量中可用。解析后的 some.sidebar
的内容将在模板文件下,一个名为 $sidebar
的变量中可用。
默认情况下,Handlebars 部分也是使用 Laravel 的 ViewFinder 加载的,因此您可以自由地使用点符号来指定一个视图。
{{#posts}}
{{> posts._post}}
{{/posts}}
除此之外,一切照旧!
示例
-
使用 View::make() 的示例
app/views/test.hbs
<h1>{{ pageHeading }}</h1> <div> {{ pageContent }} </div>
app/router.php
Route::get('/', function() { return View::make('test', array( 'pageHeading' => 'Rendered with Lightncandy', 'pageContent' => 'But still looks like Laravel!' )); });
-
使用 Blade 控制器布局的示例
app/views/layouts/master.blade.php
<html> <head></head> <body> {{ content }} </body> </html>
app/views/test.mustache
<h1>{{ pageHeading }}</h1> <div> {{ pageContent }} </div>
app/controllers/TestController.php
<?php class TestController extends BaseController { public $layout = 'layouts.master'; public function index() { $this->layout->nest('content', 'test', array( 'pageHeading' => 'Rendered with Lightncandy', 'pageContent' => 'But still looks like Laravel!' )); } }
-
使用 Handlebars 布局的示例
app/views/posts/_post.hbs
<article> <h2>{{ title }}</h2> <div> {{ content }} </div> </article>
app/views/blog/index.hbs
<html> <head></head> <body> <h1>My Blog</h1> {{#posts}} {{> posts._post}} {{/posts}} </body> </html>
app/routes.php
Route::get('/', function() { $posts = array( array( 'title' => 'This is a Title', 'content' => 'lorem ipsum...' ), array( 'title' => 'This is a another title', 'content' => 'lorem ipsum...' ), array( 'title' => 'This is yet another Title', 'content' => 'lorem ipsum...' ), ); return View::make('blog.index', compact('posts)); });
关于模板数据的说明
Laravel 预期 视图数据 以 array
的形式传递。
然而,Handlebars PHP 还允许使用上下文对象。
如果您想使用上下文对象,传递一个带有 __context
键的数组,这将被使用。例如:
`return view('my.view', ['__context' => new Context]);`
配置
您可以在 ConfigServiceProvider
中更改传递给 Lightncandy 的配置选项。例如:
config([
'handlelars.cache' => storage_path() . '/framework/views/handlebars',
]);
所有 handlelars.
选项都直接传递给 Mustache_Engine 构造函数,所以您可以使用与 Lightncandy 相同的任何选项