如何在刀片Laravel视图中正确返回数组值

时间:2019-05-10 08:06:16

标签: php arrays laravel laravel-blade

我正在使用Laravel的数据库表组件,但是我想在刀片视图中进行检查,但是似乎无法找出最佳的方法。由于数组是在视图中创建的,而不是在控制器中创建的。

我有一个数组和一个对象值。而且,如果该对象的值为true,则应该在数组中显示额外的一行。

我所拥有的是: "title" => "view_template"

我想生产的是以下

[
    'sometitle1' => 'someview1',
    'sometitle2' => 'someview2', //this part needs if statement is true
    'sometitle3' => 'someview3'
]

我在想这样的事情

[
    'sometitle1' => 'someview1',
    ($obj->has_this_field) ? ['sometitle2' => 'someview2']:
    'sometitle3' => 'someview3'
]

但是它显然没有做到这一点。我通常使用控制器中的array_push解决此问题。最好的方法是,因为这是在刀片视图中。

我也尝试过

[
    'sometitle1' => 'someview1',
    ($obj->has_this_field) ? ['sometitle2' => 'someview2']:
    'sometitle3' => 'someview3'
]

这显然是行不通的

[
    'sometitle1' => 'someview1',
    ($obj->has_this_field) ? 'sometitle2' => 'someview2':
    'sometitle3' => 'someview3'
]



@include('partials.panel', [
    'header' => trans('general.information'),
    'partial' => 'partials.show-tabs',
        'partialData' => [
            'root' => 'equipment.equipment.panels',
            'tabs' => [
                'general' => 'general',
                'advanced' => 'maintenance',
                (!$equipment->has_running_hours) ? ['runninghours' => 'runninghours']:
                'history' => 'history',
            ]
        ]
    ])

这就是我要生产的

[
    'general' => 'general',
    'runninghours' => 'runninghours',
    'history' => 'history'
]

1 个答案:

答案 0 :(得分:0)

为什么不先使用@php //your Logic @endphp创建一个数组,然后将该数组传递给您的@include部分

类似下面的内容。

@php
$array = [
    'header' => trans('general.information'),
    'partial' => 'partials.show-tabs',
        'partialData' => [
            'root' => 'equipment.equipment.panels',
            'tabs' => [
                'general' => 'general',
                'advanced' => 'maintenance',
            ]
        ]
    ];
if(!$equipment->has_running_hours)
{
 $array['partialData']['tabs']['runninghours'] = 'runninghours';
}
else
{
 $array['partialData']['tabs']['history'] = 'history';
}

    @endphp

现在将其传递给您的@include

@include('partials.panel',$array)