繁体   English   中英

如何将 Blade 模板文件扩展名从 *.blade.php 更改为仅 *.blade

[英]How can I change the Blade template file extention from *.blade.php to only *.blade

我知道 Laravel 的刀片模板位于 /resource/views 目录中。 它的扩展名是.blade.php

我的问题是我为前端设计师设置了一个单独的 repo 来处理刀片模板,并且该 repo 被设置为限制推送任何带有.php扩展名的文件

那么如果我将所有.blade.php文件更改为.blade文件怎么办 通过这样做,laravel 无法细化视图文件。

我该如何管理它。

您可以轻松添加自定义extensionLaravel提供了一种开箱即用的简单方法。 只需打开app\\Providers\\AppServiceProvider.php文件并在boot方法中添加以下代码(不要忘记在namespace App\\Providers;之后use View类顶部的use View ):

public function boot()
{
    View::addExtension('blade', 'blade');
}

现在,你可以使用这样的东西,例如:

Route::get('/example', function () {
    return view('example', ['name' => 'The Alpha']);
});

在这种情况下,您应该使用名称example.bladeviews目录中创建一个视图,例如( resources/views/example.blade ):

<!-- Also a master.blade should be in views/layouts directory -->
@extends('layouts.master')

@section('content')
    Hello {{ $name }}
@endSection

这是resources/views/layouts/master.blade代码:

<!DOCTYPE html>
<html>
    <head>
        <title>Laravel Custom Template</title>
    </head>
    <body>
        <div>
            @yield('content')
        </div>
    </body>
</html>

如果一切顺利,那么您应该在访问/example路由时看到Hello The Alpha 所以,唯一的事情就是使用View::addExtension('extension', 'engine)添加一个新的extension ,在这个例子中,我使用了blade作为引擎,所以你可以使用所有的blade指令/语法。 或者,您可以使用php作为引擎,这些默认情况下可用(也file ),如果您使用php作为引擎,则不能使用blade指令/语法。

通过扩展Illuminate\\View\\Factory类来创建自定义视图工厂类。 在该类中,修改$extensions属性:

protected $extensions = [
        'blade' => 'blade', // add this entry
        'blade.php' => 'blade',
        'php' => 'php',
        'css' => 'file',
        'html' => 'file',
    ];

然后,创建一个新的服务提供者,并使用它将您的自定义工厂绑定到View\\Factory接口:

$this->app->bind(
            'Illuminate\Contracts\View\Factory',
            'App\YourCustomerViewProvider'
        );

应该就是这样。 注意:我没有测试过这个,所以它可能需要调整。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM