当前,将图像加载到页面上后,如果用户删除图像,则页面的刷新刷新,如果它们最终删除了所有图像,则在屏幕上出现错误$计数变量未定义。如果刷新页面,这怎么可能?我知道底部的表单需要具有计数变量,但是当前,该变量来自第一个形式的内部,因此我不能将表单放在另一个形式中。
我该怎么办?
{!! 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() !!}
也许您可以定义$count
,如果没有图像:
@if (count($project->getImages()) > 0)
@foreach ( $project->getImages() as $count => $asset)
// Some content here
@endforeach
@else
<?php $count = 0; ?>
@endif
它不是最漂亮的,但可能起作用。
您可能不应该依靠通过 foreach
循环设置的变量,以在循环之外存在。如果循环不运行,那么迭代器就不会结束,则不会设置该变量。
也是一个循环,您是否总是想从需要打开该表单的价值的迭代中获得最后的"键"?这是意图还是您想获得的实际数量?
旁注,要替换if
,然后在相同的值上foreach
...
@forelse (...)
iterating
@empty
nothing to iterate
@endforelse
如果您在循环中,则可以使用$loop
变量以获取当前索引,迭代等...
laravel -docs -blade -loops
laravel -docs -blade-循环变量