fewfar/laravel-frontend

Laravel项目的前端构建框架

1.0.1 2020-06-28 08:03 UTC

This package is auto-updated.

Last update: 2024-09-29 05:36:27 UTC


README

Laravel Frontend

Build Status Total Downloads Latest Stable Version License

Laravel包,为非生产环境提供前端模板路由。

安装

composer require fewfar/laravel-frontend

包的服务提供者在启动时将自动加载。

然后发布模板和配置文件

php artisan vendor:publish --provider="FewFar\LaravelFrontend\ServiceProvider"

这样发布的文件是结构示例,不由包强制执行。编辑 config/vendor/fewfar/frontend.php 以更改这些文件的路径。

基本用法

将以下键添加到您的 .env 文件中以启用前端路由(通常是本地和测试环境)

FRONTEND_ENABLED=true

如果此键已在您的项目中使用,您可以在 config/vendor/fewfar/frontend.php 文件中更改它。

现在您可以访问 /templates/ 并查看模板。

页面默认值

在应用程序中,通常很有用,在控制器没有明确提供的情况下,从配置或数据库中加载回退变量。例如,HTML <head> 中的页面标题就是一个例子。根据您的设置,构建前端模板时可能没有定义数据库,或者您甚至不希望数据库参与。在这种情况下,您仍然希望布局模板接收这些变量,但对于所有前端模板来说,硬编码它们会更好。

为此,您可以扩展 PageDefaultsViewComposer 并在服务提供者中注册它

扩展视图组合器以实现自己的值

<?php

namespace App\Providers;

use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;

use FewFar\LaravelFrontend\PageDefaultsViewComposer as BaseViewComposer;

class PageDefaultsViewComposer extends BaseViewComposer
{
    /**
     * Gets frontend default variables.
     *
     * @return array
     */
    protected function defaultsForFrontend()
    {
        return [
            'page' => [
                'title' => 'HTML Meta Title',
                'description' => 'HTML Meta Description',
                ...
            ],
        ];
    }

    /**
     * Gets application default variables (i.e. ones used when not in the
     * frontend templates.)
     *
     * @return array
     */
    protected function defaultsForApp()
    {
        return [
            'page' => [
                'title' => config('app.name'),
                ...
            ],
        ];
    }
}

注册您的视图组合器

<?php

namespace App\Http\ViewComposers;

use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;

use App\Http\ViewComposers\PageDefaultsViewComposer;

class ViewComposerServiceProvider extends ServiceProvider
{
    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function boot()
    {
        // Here the 'app/' directory is assumed to be all the individual pages,
        // and does not contain partials, or layouts. This is because the
        // composer will be ran multiple times if the Blade template extends
        // from files also in the 'app/' directory.
        View::composer('app/*', PageDefaultsViewComposer::class);
    }
}

配置定制

此包使用 Laravel Config Provider 允许您自定义我们如何与配置交互,您可以在那里找到有关如何定制的更多详细信息。

Laravel 兼容性

开发

此包提供 Docker 设置以开发和测试自身。从此目录的根目录中,您可以运行

$ scripts/composer install
$ scripts/test

许可证

Laravel Frontend 是开源软件,许可协议为 MIT 协议