来自 Blade 引擎的 @cannot 语句不工作

@cannot statement from Blade engine not working

我正在尝试在我的模板中使用@cannot,但我遇到了以下问题。使用代码:

@section('content')
    @can('upload-images',$flyer)
        <form action="{{ URL::to('/') }}/{{ $flyer->zip }}/{{ $flyer->street }}/photos" method="POST" class="dropzone" enctype="multipart/form-data">
            {{ csrf_field() }}
        </form>
    @endcan
    @cannot
        <p>Not allowed</p>
    @endcannot
@stop

@cannot 抛出以下错误:

Undefined class constant 'denies'

我知道@cannot 存在并且还使用了 Gate::denies,这是我正在犯的错误,这里是 Github 应该发生魔法的提交:

https://github.com/laravel/framework/commit/9c41aa0d53412e3008285e89ff9764fa51b42469

有线索吗?谢谢!

Laravel的文档正在更新中。我应该使用@else:

@can(...)
@else
@endcan

并且@cannot应该作为@can的反义词使用,但绝不能同时使用:

@cannot(...)
@else
@endcannot

您忘记在cannot方法中输入:

@cannot('upload-images',$flyer)
       <p>Not allowed</p>
@endcannot

但是在这种情况下使用 else 更优雅

 @can('upload-images',$flyer)
        <form action="{{ URL::to('/') }}/{{ $flyer->zip }}/{{ $flyer->street }}/photos" method="POST" class="dropzone" enctype="multipart/form-data">
            {{ csrf_field() }}
        </form>
 @else
        <p>Not allowed</p>
 @endcan