假设我将一个包含两个不同类的实例的数组传递给View模板,该模板包含表标记。每个项目都将显示为表格行,因此我需要检查它的类名,以便包含适当的行部分。 到目前为止,我只能看到实现这一目标的两种方法:
get_class
函数isFoo()
方法添加到这两个类中,如果对象的类为true
Foo
我不喜欢第二个选项,因为在我有两个以上类的情况下维护起来比较困难,但是我想知道第一个选项是否常用,get_class
函数是否适合放在View中模板。
laravel的刀片模板中的示例:
/* catalog.cycle_rows.blade.php */
@foreach($cycles as $cycle)
@include('catalog.cycle_row')
@if( $cycle->subcycles )
@include('catalog.cycle_rows', ['cycles' => $cycle->subcycles])
@else
@foreach($cycle->cycleItems as $cycleItem)
@if($cycleItem->isBlock()) // here's the check
@include('catalog.block_row', ['cycle' => $cycleItem])
@else
@include('catalog.cycle_item_row')
@endif
@endforeach
@endif
@endforeach
答案 0 :(得分:0)
我没有使用任何建议的选项并使用instanceof
:
@if($cycleItem instanceof Block)
@include('catalog.block_row', ['cycle' => $cycleItem])
@else
@include('catalog.cycle_item_row')
@endif
答案 1 :(得分:0)
我会使用view presenter。这将允许您将“模型到视图”逻辑包装在专门用于此功能的单独层中。