Как проверить, существует ли ключ объекта и не является ли он нулевым, или это определенное значение в цикле foreach в блейде Laravel? - PullRequest
2 голосов
/ 10 ноября 2019

У меня есть foreach петля в blade , где я перебираю массив элементов , а у некоторых элементов есть дополнительный ключ, называемый validation_status или null или объект.

Пример:

category: "Storage"
client_id: 6575
created_at: "2019-08-12 15:50:04"
created_by: 233
datasheet: null
deleted_at: null
description: "3erty"
energy_rating: 0
fk_item_type: 83
id: 369
item_model_id: 475
model_number: null
power_consumption: 3
searchable: 1
shared: 1
updated_at: "2019-11-09 17:59:04"
updated_by: 233
validated: 0
validation_status: null
vendor: null

category: "Network"
client_id: 6575
created_at: "2019-07-11 16:04:56"
created_by: 233
datasheet: null
deleted_at: null
description: "2we5"
energy_rating: 0
fk_item_type: 83
id: 357
item_model_id: 470
model_number: null
power_consumption: 55
searchable: 1
shared: 1
updated_at: "2019-11-07 10:29:57"
updated_by: 233
validated: 0
validation_status:
created_at: "2019-11-07 16:08:49"
id: 2
item_id: 357
item_type: "IT_Analysis"
message: null
name: "pending"
updated_at: "2019-11-07 16:08:49"
__proto__: Object
vendor: null

Я хочу что-то сделать, если validation_status на первом месте существует и, если его ключ называется name , является определенным значением , например, "в ожидании". Как я могу сделать это в блейде?

Вот моя попытка, где прямо сейчас else условие выполняется как true , поэтому что-то не так с моим если условие :

    <p>
    @if($item->validation_status && $item->validation_status !== null) 
    @if($item->validation_status->name  === "pending" )
     <?php echo link_to('admin/items/' . $item->id . '/validation-status' . $item->validation_status->id . '/complete', 'Validate', array('class' => 'btn btn-primary w-full')); ?>
     <?php echo link_to('admin/items/' . $item->id . '/validation-status' . $item->validation_status->id . '/documentation-needed', 'Request documentation', array('class' => 'btn btn-primary w-full')); ?>
     <?php echo link_to('admin/items/' . $item->id . '/validation-status' . $item->validation_status->id . '/reject', 'Reject', array('class' => 'btn btn-primary w-full')); ?>
    @endif
    @else
      <?php echo Form::submit('Accept and Save!', array('class' => 'btn btn-primary w-full')); ?>
    @endif
    </p>

1 Ответ

0 голосов
/ 10 ноября 2019

Это объект, а не массив.

@php $check = isset($items->validation_status); @endphp

isset () вернет false, если свойство не существует или если оно пустое.

Так что оно идеально подходит для вашегоситуация.

@if($check)
    //Execute your code
@endif
...