目前,在将图像加载到页面上之后,如果用户删除图像,页面将被刷新,如果它们最终删除所有图像,则屏幕上将显示错误,表示$ count变量未定义。如果页面刷新,怎么会这样?我知道底部的表单需要有count变量,但是目前,该变量来自第一个表单内部,所以我不能将表单放在另一个表单中。
我该怎么办?
{!! Form::open() !!}
... Rest of form inputs
@if (count($project->getImages()) > 0)
@foreach ( $project->getImages() as $count => $asset)
<div class="delete-toggle-container">
<a href="#" data-form-submit="image-delete-{{ $count }}" class="text-danger image-delete-toggle" data-toggle="tooltip" data-placement="top" title="Delete This Image"><i class="fa fa-times-circle-o"></i></a>
</div>
@endforeach
@endif
{!! Form::close() !!}
{!! Form::open(['url' => '/route/resource/' . $project->id . '/images', 'method' => 'DELETE', 'id' => 'image-delete-' . $count]) !!}
{!! Form::hidden('image', $asset, ['readonly' => true] ) !!}
{!! Form::close() !!}
答案 0 :(得分:0)
如果没有图片,也许你可以定义$count
:
@if (count($project->getImages()) > 0)
@foreach ( $project->getImages() as $count => $asset)
// Some content here
@endforeach
@else
<?php $count = 0; ?>
@endif
这不是最漂亮但可能有用。
答案 1 :(得分:0)
您可能不应该依赖于通过foreach
循环设置的变量存在于循环外部。如果循环没有运行,则迭代器没有任何内容,那么该变量将不会被设置。
这也是一个循环,您是否总是希望迭代的最后一个'键'作为打开该表单所需的值?这是意图还是你试图获得实际的计数?
附注,在同一个值上替换if
然后foreach
......:
@forelse (...)
iterating
@empty
nothing to iterate
@endforelse
如果你在循环中,你可以获得$loop
变量来获取当前索引,迭代等...