Как для во View сделать проверку, аналогичную, как для контроллера
foreach($collection as $object){
if($object instanceof ModelName1){ //code goes here.. }
elseif($object instanceof ModelName2){ //code goes here.. }
else($object instanceof ModelName3){ //code goes here.. }
}
Laravel 5.1.
Особенно интересует Laravel way стиль решения, без <?php, лаконично
Передавать дополнительный массив, в котором будет идентификатор Модели не хочется, но пока приходится.
Варианты для 5.2, 5.3, или 4.х тоже интересно, может кому-то будет полезно.
Andrzej Wielski предложил
@if(count($collection))
@foreach($collection as $object)
@if($object instanceof ModelName1)
//
@elseif($object instanceof ModelName2)
//
@elseif($object instanceof ModelName2)
//
@endif
@endforeach
@endif
однако в таком случае,
dd($object); //ModelName1
dd($object instanceof ModelName1); //false
Оригинал кода(части)
view
@if(count($newPreorderDetails))
@foreach($newPreorderDetails as $newPreorderDetail)
@if($newPreorderDetail instanceof BaseDetail)
go go go
@endif
@endforeach
@endif
Model app\BaseDetail.php
class BaseDetail extends Model
{
// конструкторы, связи, группы и много всего
}
И мои дампы,
dd($newPreorderDetail);
BaseDetail {#267 ▼
#table: "base_detail"
#guarded: []
#connection: null
#primaryKey: "id"
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: array:19 [▶]
#original: array:19 [▶]
#relations: []
#hidden: []
#visible: []
#appends: []
#fillable: []
#dates: []
#dateFormat: null
#casts: []
#touches: []
#observables: []
#with: []
#morphClass: null
+exists: true
+wasRecentlyCreated: false
}
и
dd($newPreorderDetail instanceof BaseDetail);
false