Laravel 检查 livewire 组件是否存在

Laravel check livewire component existence

我想在渲染之前检查 livewire 组件是否存在。
我的程序有模块,每个客户端都启用了其中一些模块。我可以通过 $client->getModules().
获取客户拥有的模块列表 每个模块都可以实现livewire组件来增强程序的功能。如果这些组件存在于程序的正确部分,我想渲染它们。
例如在用户创建视图中,我会这样:

@foreach($client->getModules() as $module)
    if( component_exists( $module . '::users.create' ) )
        @livewire( $module . '::users.create' )
    endif;
@endforeach

如果模块实现了与用户创建相关的东西,它就会有livewire组件users.create,但并不是所有的模块都会增强用户创建。
我需要在渲染之前断言组件的存在。
我想知道是否有类似 component_exists( Component::class ) 的东西,否则,我很想看看是否有人可以给我提示如何将其创建为辅助函数。

您可以利用 LivewireComponentsFinder class 检查组件是否在清单中:

app(LivewireComponentsFinder::class)->getManifest();

如果你想创建一个助手,我创建了laravel-helpers。所以,你可以像这样创建一个助手:

function component_exists($class)
{
    $manifest = app(\Livewire\LivewireComponentsFinder::class)->getManifest();

    return (bool) array_search($class, $manifest);
}