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

时间:2017-11-22 19:32:38

标签: php laravel

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

2 个答案:

答案 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变量来获取当前索引,迭代等...

Laravel - Docs - Blade - Loops

Laravel - Docs - Blade - The Loop Variable