Laravel - 如何将渲染的组件传递给变量?

时间:2021-07-27 13:00:39

标签: laravel components

https://laravel.com/docs/8.x/blade#rendering-components

是否可以将渲染的组件传递给变量? 我的意思是这样的:

@php
$alert = <x-alert/> //how to get it?
@endphp

{!! $alert !!}

我需要将组件放入变量中才能在其他变量中使用 HTML。


我的“真正”问题:
我有一个 TableHelper 类来生成表头。在一个标题 <th> 我有 <select> 输入。我想用组件 <x-inputs.select/>

替换它
    {!! (new TableHelper())
    ->pushTh('wh40', 'lp.')
    ->pushThSortable('wh150', 'kod produktu', 'product_code')
    ->pushThSortable('', 'nazwa produktu', 'product_name')
    ->pushThSortable('wh70', 'ilość do pobrania', 'quantity')
    ->pushThSortable('wh70', 'stan na<br>MG', 'stock_mg')
    ->pushThSortable('wh70', 'stan na<br>PT', 'stock_pt')
    ->pushThSortable('wh70', 'stan na<br>'.Form::select('', ['' => '--', 1 => 'MG', 2 => 'PT'], null, ['class' => 'form-control input-sm']), 'stock')
    ->pushThSortable('wh50', '')
    ->pushTh('wh70')
    !!}

结果是:screenshot

1 个答案:

答案 0 :(得分:0)

没有。组件的呈现方式与作为 php 变量的存储不兼容。这也不是一个很好的关注点分离。

您希望将组件作为变量保存的目标是什么?

组件无论如何都可以多次使用,所以不需要这个原因。

因此,我认为这是有条件的。在这种情况下,我建议在刀片 @if 语句(或类似语句)中引用该组件,例如:

@if ($error)
  <x-alert /> 
@endif

没有更多细节很难说更多。随意添加更多代码供人们查看。