我可以在 laravel 组件中设置自定义标签和自定义值吗?

Can i set a custom tag and a custom value in laravel component?

<div class="bg-white dark:bg-custom-black-600 dark:text-white rounded px-4 pb-4 pt-2">
    <div class="flex-shrink-0 flex justify-between items-center">
        <h4 class="font-semibold flex-shrink-0">
            {{ __('services') }}
        </h4>
        <i class="ri-hard-drive-2-fill text-blue-600 dark:text-blue-600"></i>
    </div>
    <p class="text-3xl text-blue-600">
        {{ Auth::user()->services->count() }}
    </p>
</div>

这是我来自组件 card.blade.php 的代码。现在的问题是:“我可以创建一个必须在标签 <x-card title="" service=""> 中指定的自定义值,还是不可能?我希望 {{ __('services') }} {{ Auth::user()->services->count() }} 在代码示例。

您需要编写一个组件 class 来处理模板中的变量。 class 将解释输入并将其存储在可以在模板中访问的变量中。这都是描述in the documentation.

<?php

namespace App\View\Components;

use Illuminate\View\Component;

class Card extends Component
{
    public function __construct(
        public string $title,
        public string $service,
    )
    {}

    public function render()
    {
        return view('components.card');
    }
}

像这样调用组件:

<x-card title="Something" service="something else"/>

然后您应该可以在 Blade 模板文件中使用 $title$service。请注意,如果您想使用 PHP 值,则需要执行以下操作:

<x-card :title="__('something')" service="something else"/>

注意属性名称前面的冒号。