php laravel两种形式共享变量



当前,将图像加载到页面上后,如果用户删除图像,则页面的刷新刷新,如果它们最终删除了所有图像,则在屏幕上出现错误$计数变量未定义。如果刷新页面,这怎么可能?我知道底部的表单需要具有计数变量,但是当前,该变量来自第一个形式的内部,因此我不能将表单放在另一个形式中。

我该怎么办?

   {!! 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-循环变量

最新更新