我有查看页面
@if((Voyager::can('delete_'.$dataType->name))||(Voyager::can('edit_'.$dataType->name))||(Voyager::can('browse_'.$dataType->name)))
some function here
@elseif
return Redirect :: to('404page') @endif
错误
VerifyCsrfToken.php第156行中的ErrorException:尝试获取属性 非对象的
其他条件代码不起作用。我如何从一个内部返回另一个。任何帮助将不胜感激。
答案 0 :(得分:1)
将@elseif
更改为@else
@if((Voyager::can('delete_'.$dataType->name))||(Voyager::can('edit_'.$dataType->name))||(Voyager::can('browse_'.$dataType->name)))
//
@else
Redirect::to('404page')
@endif
使用用户redirect()
代替Redirect::to
。或者,如果您要将用户发送到404错误页面,请使用abort('404')
。
答案 1 :(得分:1)
您不能在视图中使用重定向响应。重定向响应是代码为3XX的响应。响应代码是标头的一部分,但是您只能发送标头一次。要发送视图数据,您需要已经发送了标头,因此您不能再返回重定向响应。但是,您可以使用JavaScript:
@if((Voyager::can('delete_'.$dataType->name))||(Voyager::can('edit_'.$dataType->name))||(Voyager::can('browse_'.$dataType->name)))
some function here
@else
<script> window.location.href = "{!! url()->to('404page') !!}"; </script>
@endif
请注意,这实际上将加载页面,并且用户可能会阻止重定向的发生,因此请不要显示任何受限制的内容。
理想情况下,您需要在控制器或中间件中的视图之前返回重定向响应