在View中如何使用return Redirect?

时间:2018-09-26 09:23:01

标签: laravel

我有查看页面

@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:尝试获取属性   非对象的

其他条件代码不起作用。我如何从一个内部返回另一个。任何帮助将不胜感激。

2 个答案:

答案 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

请注意,这实际上将加载页面,并且用户可能会阻止重定向的发生,因此请不要显示任何受限制的内容。

理想情况下,您需要在控制器或中间件中的视图之前返回重定向响应