我正试图在我的布局中使用它,我突然想到使用Laravel 5.4 @slot的新功能。
只是想知道是否可以将数组传递到插槽?
+
答案 0 :(得分:6)
据我所知,通过@slot
将数组传递给组件是不可能的。但是, 可以直接将数组传递给组件,而不使用插槽。
将其他数据传递给组件
有时您可能需要将其他数据传递给组件。对于 这个原因,你可以传递一个数据数组作为第二个参数 @component指令。所有数据都将提供给 组件模板作为变量:
@component('alert', ['foo' => 'bar']) ... @endcomponent
所以,让我们说你有一系列数据:
$my_array = ['a', 'b', 'c']
您可以将其传递给组件,如下所示:
@component('mylayouts.partials.contentheader', ['my_array' => $my_array])
...
@endcomponent
或者你可以直接传递它,而不使用变量:
@component('mylayouts.partials.contentheader', ['my_array' => ['a', 'b', 'c']])
...
@endcomponent
然后,在您的组件文件中,您将可以访问$my_array
变量。例如,您可以在 contentheader.blade.php
文件中执行此操作:
<ul>
@foreach($my_array as $value)
<li>{{ $value }}</li>
@endforeach
</ul>
答案 1 :(得分:5)
我需要同样的。
这可以作为暂时的解决方案,但不是最好的形式。
@component('component.tab.header')
@slot('navs', [
"a" => "Pepe",
"b" => "Maria"
])
@endcomponent
修改强>
最后,就我而言,我解决了这个问题:
@component('component-name')
@slot('slot-name')
Value1|Value2|Value2
@endslot
@endcomponent
在组件代码中:
@foreach(explode('|', $slot-name) as $value)
The value is {{ $value }} <br/>
@endforeach
答案 2 :(得分:1)
我可能错了,但你不能只将数据传递给组件并处理组件中的数据吗?文档显示
有时您可能需要将其他数据传递给组件。因此,您可以将数据数组作为第二个参数传递给@component指令。所有数据都将作为变量提供给组件模板:
@component('alert',['foo'=&gt;'bar']) ... @endcomponent
处理组件中的数据而不是使用插槽?
答案 3 :(得分:1)
它可以如此简单轻松地将数组发送到组件模板中,而不需要任何@slot 在视图页面
view.blade.php
@component('components.button',[
'tooltipTitle'=>'buttorr33',
'addStyle'=>'pointer',
])
@endcomponent
在组件php文件 component \ button.php
中<div class="block-buttons {{$addStyle or NULL}}"
{{--if set tooltip, add atributes--}}
@if (isset($tooltipTitle))...
答案 4 :(得分:0)
我该怎么做:
在任何视图中包含@PageNav组件标记
beta = nlinfit(X, Y, @(beta, X) modelfun(beta, c, X), beta0);
创建view / components / PageNav.php文件
@PageNav([
'menus' => [
[
'title' => 'foo',
'url' => '/foo/index'
],
[
'title' => 'bar',
'url' => '/bar/page'
]
]
]) @endPageNav
注册组件:(AppServiceProvider.php->引导)
@foreach ($menus as $menu)
<li class="nav-item">
<a class="nav-link" href="{{ $menu['url'] }}">{{ $menu['title'] }}</a>
</li>
@endforeach
希望有帮助!
答案 5 :(得分:0)
这是示例组件。将项目数分配给$numberOfSlots
变量,它将逐个搜索插槽块(body_1
,body_2
,body_3
)
由于我构建了一个表单向导,因此很难在" "
之间定义html块,因此我更喜欢@slot
。
组件:
<div class="component">
@for($i = 1; $i <= $numberOfSlots; $i++)
<div class="item">
{{ ${"body_{$i}"} }}
</div>
@endfor
</div>
刀片:
@component(['numberOfSlots' => 3])
@slot('body_1')
Dynamically created slot 1
@endslot
@slot('body_2')
Dynamically created slot 2
@endslot
@slot('body_3')
Dynamically created slot 3
@endslot
@endcomponent