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);
}
我想在渲染之前检查 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);
}