【问题标题】:How to use return Redirect, inside View?如何在视图中使用返回重定向?
【发布时间】:2018-09-26 17:36:54
【问题描述】:

我有查看页面

@if((Voyager::can('delete_'.$dataType->name))||(Voyager::can('edit_'.$dataType->name))||(Voyager::can('browse_'.$dataType->name)))
 some function here
@elseif

return 重定向::to('404page') @endif

错误

VerifyCsrfToken.php 第 156 行中的 ErrorException:尝试获取属性 非对象的

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

【问题讨论】:

    标签: laravel


    【解决方案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
    

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

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

    【讨论】:

    • 感谢您的回复,但现在它重定向到127.0.0.1:8000/404page.is 有任何方法可以重定向127.0.0.1:8000/admin/404page
    • url()-&gt;to(...) 可用于将其重定向到您想要的任何位置,以便您可以执行url()-&gt;to('admin/404page')。此外,如果它是命名路线,您可以使用url()-&gt;route('name'),基本上您可以执行URL Generation中提到的任何操作
    【解决方案2】:

    @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')

    【讨论】:

    • VerifyCsrfToken.php 第 156 行中的ErrorException:尝试获取非对象的属性
    猜你喜欢
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多