litstack/meta

v2.0.7 2024-05-13 09:39 UTC

This package is auto-updated.

Last update: 2024-09-13 10:15:31 UTC


README

在您的crud-models和表单内部编辑默认元字段,并在blade模板中接收它们。

安装

该软件包可以通过composer安装并自动注册。

composer require litstack/meta

现在您可以发布和迁移您的meta模型的迁移

php artisan vendor:publish --provider="Litstack\Meta\MetaServiceProvider" --tag=migrations
php artisan migrate

用法

首先,通过使用HasMeta特性并实现metaable合约来准备您的Crud-Model。

use Litstack\Meta\Metaable;
use Litstack\Meta\Traits\HasMeta;

class Post extends Model implements Metaable
{
    use HasMeta;
}

为了在litstack中显示表单,请编辑您的模型配置。

public function show() 
{
    $page->card(function($form) {
        $form->seo();
    });
}
        

要在模板中显示元字段,只需使用<x-lit-meta />组件,并将模型的metaFields传递给它。

@extends('app')

@section('meta')
    <x-lit-meta :for="$post" />
@endsection

在主模板中

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    @yield('meta')
</head>

默认值 / 自定义 / 覆盖

如果您想直接从模型属性中使用元属性,可以在配置中的metaAttributes中指定它们。您还可以覆盖元方法,例如metaAuthor,以返回动态元属性。

class Post extends Model implements Metaable
{
    use HasMeta;

    protected $metaAttributes = [
        'author' => 'author.name',
        'image'  => 'header_image',
    ];

    public function getHeaderImageAttribute()
    {
        // ...
    }

    public function metaTitle(): ?string
    {
        // Return a prefix:
        return "Awesome Blog: " . parent::metaTitle();
    }
}

您可以通过设置defaultMetaAttributes来设置默认属性或添加一个defaultMeta...方法。

class Post extends Model implements Metaable
{
    use HasMeta;

    protected $defaultMetaAttribute = [
        'description' => 'description',
    ];

    public function defaultMetaTitle()
    {

    }
}