PHP Laravel两个表单共享一个变量

问题描述 投票:0回答:2

目前,在将图像加载到页面上之后,如果用户删除图像,则页面将被刷新,如果它们最终删除所有图像,则屏幕上将显示错误,表示$ 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() !!}
php laravel
2个回答
0
投票

如果没有图像,也许你可以定义$count

@if (count($project->getImages()) > 0)     
    @foreach ( $project->getImages() as $count => $asset)
        // Some content here
    @endforeach
@else
    <?php $count = 0; ?>
@endif

它不是最漂亮但可能有效。


0
投票

您可能不应该依赖通过foreach循环设置的变量存在于循环外部。如果循环没有运行,则迭代器没有任何内容,那么该变量将不会被设置。

这也是一个循环,你是否总是希望迭代的最后一个'键'作为打开该表单所需的值?这是意图还是你试图获得实际的数量?

侧注,以相同的值替换if然后foreach ...:

@forelse (...)
    iterating
@empty
    nothing to iterate
@endforelse

如果你在一个循环中,你有$loop变量可用于获取当前索引,迭代等...

Laravel - Docs - Blade - Loops

Laravel - Docs - Blade - The Loop Variable

© www.soinside.com 2019 - 2024. All rights reserved.