bkwld/laravel-pug

Laravel 的 Pug 视图适配器

2.4.0 2023-11-20 22:16 UTC

README

Packagist GitHub Actions StyleCI codecov Code Climate License

这是一个小包,它通过 Pug.php (见 完整文档) 为 Laravel 提供了编译 Pug (Jade) 模板的支持。在视图中支持纯 PHP 和 Blade 语法

这是正在进行的 2.0 版本的文档。要加载 1.11 版本的文档,请点击 此处

安装

如果您还没有安装 composer,请先安装它: https://getcomposer.org.cn/download/

现在,在 Laravel 项目的根目录打开一个终端。如果是新项目,请使用以下命令创建它: composer create-project --prefer-dist laravel/laravel my-new-project (将 my-new-project 替换为您自己的项目名称,见文档以获取更多信息)

然后运行

composer require bkwld/laravel-pug

用法

Route::get('/', function () {
    return view('my-page');
});

它将首先尝试加载 views/my-page.pug,或者 views/my-page.blade.pug,或者回退到默认的 blade 引擎加载 views/my-page.blade.php

与 Blade 一样,您可以将变量传递给视图

Route::get('/', function () {
    return view('my-page', [
        'user' => Auth::user(),
        'messages' => ['Hello', 'Bye'],
    ]);
});

任何扩展名为 .pug 的文件都将被编译为 pug 模板。Laravel Pug 还注册了 .pug.blade,在 Pug 代码编译完成后,也会编译 blade 代码;但我们强烈建议您使用干净和标准的扩展名 .pug,这将被大多数系统识别。它以与 Blade 模板相同的方式编译您的 Pug 模板;编译后的模板将放入您的存储目录。因此,您不需要在每个页面加载时都进行编译。

换句话说,只需将您的 Pug 文件放在常规视图目录中,并将其命名为 whatever.pug。您可以在 Laravel 中像通常一样引用它们,例如 view('home.whatever') 对应于 resources/views/home/whatever.pug

Pug 视图文件可以与常规 PHP 视图并行工作。

在 Pug 模板中使用 Blade

此功能是为过渡目的设计的,因为 pug 中有所有 blade 功能,所以您不需要两者。

要在 Pug 中使用 Blade 模板,只需将文件命名为 .blade.pug 扩展名。

阅读更多

请注意,此模式将首先使用 pug 渲染模板,然后将输出传递给 blade 进行渲染,这意味着您的模板必须具有有效的 pug 语法,并且必须渲染有效的 blade 模板。这也意味着只有通过 pug 文本输出才能访问 blade 指令,请参阅下面的示例

| @if ($one === 1)
div $one = 1
| @endif
p {{ $two }}

如果使用以下值渲染此内容: ['one' => 1, 'two' => 2],您将得到

<div>$one = 1</div>
<p>2</p>

PS:请注意,您将得到与以下纯 pug 代码相同的输出

if one === 1
  div $one = 1
p=two

在 Lumen 中使用

bootstrap/app.php 中注册服务(在 注册服务提供者 部分是专用位置)

$app->register(Bkwld\LaravelPug\ServiceProvider::class);

然后您可以使用它来使用 view()

$router->get('/', function () use ($router) {
    // will render resources/views/test.pug
    return view('test', [
        'name' => 'Bob',
    ]);
});

配置

所有 Pug.php 选项都通过一个可编辑的 Laravel 配置数组文件传递,您可以在 /config/laravel-pug.php 中编辑它

如果由于任何原因缺少配置文件,只需运行以下命令:php artisan vendor:publish --provider="Bkwld\LaravelPug\ServiceProvider"

扩展布局/包含子视图

模板的默认根目录为resources/views,因此从任何深层次的模板目录,您可以使用绝对路径从根目录获取其他Pug文件:extends /layouts/main将扩展文件resources/views/layouts/main.puginclude /partial/foo/bar将包含resources/views/partial/foo/bar.pug。您可以使用basedir选项将根目录设置为其他目录。不以斜杠开头路径将相对于当前模板文件解析。

历史

请阅读Github上的项目发布以获取发行说明。