在View模板中获取类名的常见做法

时间:2015-02-23 19:39:05

标签: php laravel blade

假设我将一个包含两个不同类的实例的数组传递给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

2 个答案:

答案 0 :(得分:0)

我没有使用任何建议的选项并使用instanceof

@if($cycleItem instanceof Block)
    @include('catalog.block_row', ['cycle' => $cycleItem])
@else
    @include('catalog.cycle_item_row')
@endif

答案 1 :(得分:0)

我会使用view presenter。这将允许您将“模型到视图”逻辑包装在专门用于此功能的单独层中。